Bootstrap

JAVA每日作业day6.25

ok了家人们今天我们学习了,接口这个知识,我们闲话少叙,一起看看吧。

一,接口

1.1 接口概述

接口是功能的集合。接口的内部主要就是定义方法,包含常量,抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK9)。

接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为实现类。

好处:

功能的定义与实现分离,优化了程序设计。

程序的扩展性

1.2 接口的定义

定义接口的关键字使用interface

接口中可以定义变量,变量有固定的修饰符修饰:public static final。

接口中的变量也称之为常量,其值不能改变。

接口中可以定义方法,方法有固定的修饰符,public abstract

public interface 接口名 {      
    public static final 数据类型 变量名 = 值      
    public abstract 返回值类型  方法名字(参数列表);
}
public interface MyInterface {

    //固定修饰符public static final 常量
    public static final int N=10;

    int M=20;

    //固定修饰符  public abstract 抽象方法
    public abstract void method01();

    public void method02();
}

1.3 类实现接口

类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。实现类需要重写接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。

public interface MyInterface {

    //固定修饰符 public static final 常量
    public static final int N=10;
 
    int M=20;
    
    //固定修饰符  public abstract 抽象方法
    public abstract void method01();

    public void method02();}
public class DemoTest {
    public static void main(String[] args) {

        //常量被静态修饰,接口的名字直接调用
        System.out.println(MyInterface.N);

        MyInterfaceImpl my=new MyInterfaceImpl();
        System.out.println(my.M); 
       
        my.method01();       
        my.method02();    
    }
}

 1.4 接口的多实现

public interface MyInter01 {

    public void show01();

}
public interface MyInter02 {

    public void show02();

}
public class MyInterImpl implements MyInter01, MyInter02 {

    @Override
    public void show01() {
        System.out.println("show01..."); 
   }    

    @Override
    public void show02() {
        System.out.println("show02...");
    }
}
public class DemoTest {
    public static void main(String[] args) {
        MyInterImpl my=new MyInterImpl();
        my.show01(); 
        my.show02();
    }
}

1.5 继承类同时实现接口

public interface MyInter01 {

    public void show01();

}
public interface MyInter02 {

    public void show02();

}
public class DemoTest {
    public static void main(String[] args) {

        MyInterImpl my=new MyInterImpl();
        my.show01();
        my.show02();
        my.show03();    
    }
}

1.6 接口新增方法

public interface 接口名称 {

    常量(JDK7及其以前)
    抽象方法(JDK7及其以前)
    默认方法(JDK8额外增加)
    静态方法(JDK8额外增加)
    私有方法(JDK9额外增加)

}

 

public interface MyInter {

    /*        默认方法:默认的修饰符是 public default,public可以省略,
default不可以省略        
              可以继承,也可以重写,重写需要去掉default关键字     */
    
    public default void method01(){
        System.out.println("method01...");
    }

    /*        静态方法:静态方法只能通过接口名调用,不能通过实现类名字和对象调用     */

    public static void method02(){
        System.out.println("method02...");
    }

    /*        私有方法:只能在接口中直接调用     */

//    private void method03(){
//        System.out.println("mthod03....")
//    }
}
public class MyInterImpl implements MyInter{

//    @Override
//    public void method01() {
//
//        System.out.println("impl...method01...");
//
//    }
}
public class DemoTest {
    public static void main(String[] args) {

       MyInterImpl my=new MyInterImpl();
       my.method01();

       MyInter.method02();

    }
}

1.7 接口和抽象的区别

相同点

        位于继承的顶端,用于被其他类实现或继承;

        都不能直接创建对象;

        都包含抽象方法,其子类都必须覆写这些抽象方法;

不同点

        抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;

        一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

        抽象类是 继承体系中应该具备的功能, 继承体系是一种 is..a关系

        接口是这个事物中的扩展功能,继承体系是一种 like..a关系

ok了家人们,明天见。

;