每日一学(5)——接口

接口(引用数据类型的一种)相关知识点:

一、接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。接口就是特殊类型的抽象类(可以这样理解)。

二、接口关键字:interface

     接口定义:成员方法,全抽象,不能定义带有方法体的方法定义抽象方法

     定义抽象方法格式:public abstract  返回值类型  方法名字(参数列表)

     使用interface代替了原来的class,其他步骤与定义类相同:

      (1)接口中的方法均为公共访问的抽象方法public,不可以用别的

     (2)接口中无法定义普通的成员变量

三、类实现接口:使用implements

     格式:注意:在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑

class 类 implements 接口 {

    重写接口中的所有方法

}

四、接口中成员的特点(很重要)

1、接口中可定义变量,但必须有固定的修饰符,public static final 所以接口中的变量也称之为常量,其值不能改变。

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

3、接口不可以创建对象。

4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。注意:方法要全部重写,如果子类只重写了一部分的抽象方法,还是一个抽象类。

五、接口的多实现

接口最重要的体现:解决多继承的弊端

怎么解决多继承的弊端呢?

弊端:多继承时,当多个父类中有相同功能时,子类调用会产生不确定性。

其实核心原因就是在于多继承父类中功能有主体,而导致调用运行时,不确定运行哪个主体内容。

为什么多实现能解决了呢?

因为接口中的功能都没有方法体,由子类来明确。

注意:如果两个接口的方法名相同但是返回值类型不同,类实现接口做不到,需要另寻他法!

六、类继承类实现接口

一个类继承了一个父类,还可以扩展额外的功能

例如:

class Fu {

    public  void  show(){}

}

interface Inter {

    pulbicabstract void show1();

}

class  Zi  extends Fu  implements Inter {

    public void  show1 () {

    }

}

七、接口的多继承

类与类——继承、类与接口——实现、接口和接口+继承(Java接口支持多继承)

代码:

public  interface  A{

    public  abstract   void  a();

}

public  interface  B{

     public  abstract   void  b();

}

public  interface  C  extends  A,B{

     public  abstract   void  c();

}

/*

*实现接口C,重写C接口的全部抽象方法,而且接口C继承了AB,D实现类,重写ABC三个接口全部抽象方法

/

public  interface  D  implement  C{

    public  abstract   void  a(){}

     public  abstract   void  b(){}

     public  abstract   void  c(){}

}

问题:Java中有多继承吗?

类和类中没有,接口和接口实现多继承

八、接口的思想

接口在开发中的好处:

1、接口的出现扩展了功能。

2、接口其实就是暴漏出来的规则。

3、接口的出现降低了耦合性,即设备与设备之间实现了解耦。

九、接口和抽象的区别(很重要)

相同点:

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

都不能直接实例化对象;

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

区别:

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

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

抽象类是这个事物中应该具备的内容, 继承体系是一种 is..a关系

接口是这个事物中的额外内容,继承体系是一种 like..a关系

二者的选用:

  优先选用接口,尽量少用抽象类;

需要定义子类的行为,又要为子类提供共性功能时才选用抽象类

猜你喜欢

转载自blog.csdn.net/weixin_42517286/article/details/80815617