Skip to content

Latest commit

 

History

History
84 lines (42 loc) · 1.95 KB

11_抽象类和接口.md

File metadata and controls

84 lines (42 loc) · 1.95 KB

抽象类和接口

抽象类

抽象类特点

  • 抽象类和抽象方法必须用 abstract 关键字修饰

  • 抽象类不一定有抽象方法,有抽象方法的一定是抽象类

  • 抽象类不能实例化

  • 抽象类的子类:

    要么是抽象类;要么重写抽象类的所有抽象方法

抽象类成员特点

  • 成员变量:可以是常量,也可以是变量
  • 构造方法:有构造方法,但是不能实例化(作用:用于子类访问父类数据的初始化
  • 成员方法:可以有抽象方法和非抽象方法

注意:

  • abstract 与 private、final 冲突;

    (abstract 修饰的类,必须被继承;abstract 修饰的方法,应被重写。

    但是 final 修饰的类、属性、方法不可被更改,所以final 修饰的方法不可以被重写。

    private 修饰的类只能是内部类,private 修饰的属性、方法只能在本类中调用。)

  • abstract 与 static 放一起是没有意义的。

    (static 修饰的方法是静态的,可以直接被类所调用。

    但是 abstract 修饰的方法抽象方法,没有方法体不能够被直接调用。)

接口

接口特点

  • 使用 interface

  • 类实现接口使用 implements

  • 接口不能实例化

  • 接口的子类:

    要么是抽象类;要么实现接口中所有抽象方法

接口成员特点

  • 成员变量:只能是常量,默认是 public static final
  • 构造方法:无
  • 成员方法:都是抽象方法,默认是 public abstract

抽象类和接口的区别

  • 成员区别

    抽象类:常量/变量;有构造方法;有抽象方法和非抽象方法

    接口:常量;无构造方法;只有抽象方法

  • 关系区别

    类与类:继承关系(单继承)

    类与接口:实现关系(可以多实现)

    接口与接口:继承关系(可以多继承)

  • 设计理念区别

    抽象类被继承,体现 "is a " 理念

    接口被实现,体现 "like a" 理念