温馨提示
大家好我是Cbiltps,在我的博客中如果有难以理解的句意,难以用文字表达的重点,我会有配图。所以我的博客配图非常重要!!!
本节的知识点是从我的主体博客中抽出来的,主体博客其实就是起到一个拓展上下文,为所有的知识点体现逻辑顺序的作用。所以,我会把里面有讨论价值的东西单独拉出来,方便大家食用!
欢迎大家指正/补充,加油!
正文开始
抽象类: 一个类被 abstract 修饰,就直接叫抽象类(定义不重要!)
-
抽象类不能直接实例化(会直接报错)
-
抽象类中可以有普通的方法和成员
-
普通类继承了抽象类,这个普通类中必须重写抽象类的所有抽象方法(可以被重写和调用)
-
抽象方法不能是
private
修饰的 -
一个抽象类B继承了抽象类A,那么这个抽象类A中可以不实现抽象类A的抽象方法!
-
在上条继承关系的基础上,普通类C继承了抽象类B,那么A和B中的抽象方法必须被重写!
-
抽象类和抽象方法是不能被
final
修饰!
接口: 在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,所以不能通过返回类型是否相同来判断重载。
- 接口不能单独被实例化
- 接口中包含的方法都是
抽象方法
,字段只能包含静态常量
! - 接口中的普通方法不能有具体的实现,如果要实现,就要使用 default 关键字修饰这个方法!
- 接口中可以有静态方法,这个静态方法中可以有方法体
- 接口中的方法一定是抽象方法,因此可以省略 abstract
- 接口中的方法一定是 public,因此可以省略 public
注意点与区别总结:
- 都不能被单独实例化
- 抽象类使用 extends 关键字来继承抽象类;子类使用关键字 implements 来实现接口
- 抽象方法可以有 public 、protected 和 default 这些修饰符;接口方法默认修饰符是 public,不可以使用其它修饰符。
- 抽象类只能被单继承;接口可以多实现
- 抽象类中可以有普通的方法和成员;接口中包含的方法都是
抽象方法
,字段只能包含静态常量
!