0
点赞
收藏
分享

微信扫一扫

抽象类与接口总结 - Java


详解继承抽象类和实现接口的变量和方法以及注意事项

文章目录

  • ​​一、继承抽象类​​
  • ​​二、实现接口​​
  • ​​2.1 接口含义​​
  • ​​2.2 注意事项​​
  • ​​2.3 Java8 接口新特性​​



一、继承抽象类

  1. 有抽象方法的类只能定义成抽象类
  2. 抽象类不能实例话,即不能用new来实例化抽象类,但可以创建一个具体的子类(即可以定义一个抽象类的对象变量,来引用非抽象子类的对象)
  3. 抽象类可以包含属性、方法、构造方法.
  4. 抽象方法必须被子类实现 , 否则继承抽象类的子类并未实现抽象类中的所有抽象方法,那么该子类必须也是抽象类,即必须用abstract修饰.
  5. 在Java中抽象类表示的一种继承关系, 一个类只能继承一个抽象类, 而一个类却可以实现多个接口!
  6. 抽象类可以不包含抽象方法
  7. 抽象类中的变量默认是​​friendly 型​​,其值可以在子类中重新定义,也可以重新赋值

二、实现接口

2.1 接口含义

接口不是类,而是对类的一组需求描述, 这些类要遵从接口描述的统一格式进行定义

定义规则

  1. 访问修饰符 : public或默认
  2. 接口名 : 和类名采用相同的命名机制
  3. 接口可以实现多继承

2.2 注意事项

  1. 接口中所要方法自动地属于​​public​​​,因此声明时不必写​​public​​​;接口中的域将被自动设为​​public static final​
  2. 每个类只能够拥有一个超类,但可以实现多个接口
  3. 接口可以定义常量(注意大写)
  4. 在实现接口时, 必须把方法声明为public
  5. 接口不能创建实例 , 但可以声明接口的变量,且必须引用实现了接口的类对象
  6. JDK1.7之前 , 接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法
  7. 在Java SE 8之前,不能在接口中实现方法
  8. Java SE8中, 允许在接口中增加静态方法(当实现自己的接口是,不在需要为使用工具方法另外提供一个伴随类)
  9. 可以为接口方法提供一个默认实现(必须用​​default修饰符​​标记这个方法),对于实现该接口的类可以重写默认类,将调用重写的默认类. 也可以不重写默认类,来调用接口中实现的默认类.

一个接口将一个方法定义为默认方法,然后又在超类或另一个接口中定义了同样的方法,解决冲突的方式 :

  1. 超类优先. 如果超类提供了一个具体方法,同名而且有相同参数类型的默认方法会被忽略(“类优先” 规则)
  2. 接口冲突. 如果一个超接口提供了一个默认方法, 另一个接口提供了一个同名而且参数类型(不论是否是默认参数)相同的方法,必须覆盖这个方法来解决冲突.

​​接口测试代码​​




2.3 Java8 接口新特性

1. 使用default关键字为接口定义默认方法(有实现的方法)

  • 接口的子类​​不需要​​实现,可以直接使用
  • 接口的子类也可以实现默认方法,即重写默认方法
  • 可以有多个默认方法
  • 实现多个接口中拥有相同的默认方法:
    解决方法两种分别为: 1. 重写该默认方法 2.可以使用super来调用指定接口的默认方法​​​指定接口.super.默认方法​

2. 可以定义一个或多个默认方法

  • 需要使用类名.静态方法名来调用接口中的静态方法

​​Java8 接口新特性测试代码​​


举报

相关推荐

0 条评论