【JAVA SE】『抽象类』和『接口』的区别

温馨提示

大家好我是Cbiltps,在我的博客中如果有难以理解的句意难以用文字表达的重点,我会有配图。所以我的博客配图非常重要!!!

本节的知识点是从我的主体博客中抽出来的,主体博客其实就是起到一个拓展上下文,为所有的知识点体现逻辑顺序的作用。所以,我会把里面有讨论价值的东西单独拉出来,方便大家食用!

欢迎大家指正/补充,加油!

正文开始

抽象类: 一个类被 abstract 修饰,就直接叫抽象类(定义不重要!)

  • 抽象类不能直接实例化(会直接报错)

  • 抽象类中可以有普通的方法和成员

  • 普通类继承了抽象类,这个普通类中必须重写抽象类的所有抽象方法(可以被重写和调用)

  • 抽象方法不能是 private 修饰的

  • 一个抽象类B继承了抽象类A,那么这个抽象类A中可以不实现抽象类A的抽象方法!

  • 在上条继承关系的基础上,普通类C继承了抽象类B,那么A和B中的抽象方法必须被重写!

  • 抽象类和抽象方法是不能被 final 修饰!

接口: 在一个类中,同名的方法如果有不同的参数列表参数类型不同参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,所以不能通过返回类型是否相同来判断重载

  • 接口不能单独被实例化
  • 接口中包含的方法都是抽象方法,字段只能包含静态常量
  • 接口中的普通方法不能有具体的实现,如果要实现,就要使用 default 关键字修饰这个方法!
  • 接口中可以有静态方法,这个静态方法中可以有方法体
  • 接口中的方法一定是抽象方法,因此可以省略 abstract
  • 接口中的方法一定是 public,因此可以省略 public

注意点与区别总结:

  • 都不能被单独实例化
  • 抽象类使用 extends 关键字来继承抽象类;子类使用关键字 implements 来实现接口
  • 抽象方法可以有 publicprotecteddefault 这些修饰符;接口方法默认修饰符是 public,不可以使用其它修饰符。
  • 抽象类只能被单继承;接口可以多实现
  • 抽象类中可以有普通的方法和成员接口中包含的方法都是抽象方法,字段只能包含静态常量

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Cbiltps/article/details/122550331
今日推荐