抽象类和接口

抽象类和接口

抽象类:
  1. 抽象类只能额外用public修饰,因为类只能用public,public+abstract,public+final,final,abstract五种方法修饰,而抽象类固定必须要用abstract,可用的访问修饰符只有public。

  2. 抽象类的中不一定全是抽象方法,可以有普通方法和其他类成员(变量,常量,代码块等)。但拥有抽象方法的类一定是抽象类。

  3. 抽象类中的抽象方法只能用public或protected之一修饰,故只有两种类型,不能用native,final,synchronized,private,static,strictfp(使方法的浮点运算更精确)等修饰。default为默认方法的声明,不是修饰符,也不能对抽象方法进行修饰,加在抽象方法声明中会出现结构性错误。

  4. 内部抽象类不能添加访问修饰符

接口
  1. 接口是一种特殊的抽象类

  2. 传统接口是抽象方法和final常量值定义的集合。Java8之前只包含这两个部分。其中:

  3. Java8之后接口允许定义和实现默认方法(default)或静态方法(static修饰),两个方法默认为public类型

两者对比:
  1. 抽象类同普通类,只能单继承;但一个类包括抽象类可以实现多个接口。接口可以多继承,其接口可以继承其他接口
  2. 接口中的三种方法类型:默认方法需要接口实现类的实例来调用,静态方法可以直接使用接口调用,抽象方法必须被实现才能使用
  3. 抽象类的两大方法类型:
    1. 抽象方法与接口类似,必须被子类实现才能使用
    2. 其他方法只能被继承的方法调用,调用限制与方法本身的类型有关
  4. 抽象类不能实例化。
    • 抽象类如果可以实例化的话,那么就可以调用类中的抽象方法,很明显调用抽象方法是没有意义的,所以抽象类不能实例化
posted @ 2020-10-15 19:56  Jancy丶  阅读(150)  评论(0)    收藏  举报