抽象类和接口

抽象类和接口

1.抽象类

1.定义:

类与类之间有共同特征,将这些具有共同特征的类在进一步抽象形成抽象类。由于类本身是不存在的,所以抽象类无法创建对象。(只有声明,没有方法体内容)

2.抽象类属于引用数据类型

3.语法:

【修饰符列表】 abstract class 类名{

类体

}

4.抽象类无法进行进行实例化,无法创建对象,所以抽象类是用来被子类继承的

5.final和abstract不能联合使用,这两个关键字是对立的。

6.抽象类的子类可以是抽象类。

7.抽象类虽然无法实例化,但是可以具有构造方法,这个构造方法是供子类使用的

8.抽象方法语法:【修饰符列表】 abstract 返回值类型 方法名称{};

​ 特点:1.没有方法体,以分号结尾;2.前面修饰符列表中有abstract关键字

9.抽象类中不一定有抽象方法(可以有非抽象方法),但是抽象方法一定在抽象类中。

非抽象类继承抽象类:

  1. 非抽象类继承抽象类,必须对抽象方法进行重写。因为抽象方法只能存在于抽象方法中。
  2. 抽象类继承抽象类,是不需要重写的
  3. 面向抽象编程!!!

2.接口

接口:

  1. 接口也是一种引用数据类型。
  2. 接口是抽象类的一种。接口是完全抽象的。抽象类是半抽象的(抽象类中能够编写非抽象方法)
  3. 语法:interface 接口名;
  4. 接口支持多继承,一个接口可以继承多个接口
  5. 接口中只包含两部分内容:变量和抽象方法。接口没有其他内容。
  6. 接口中的所有元素都是public修饰的
  7. public abstract修饰符可以省略。
  8. 接口中的方法都是抽象方法。
  9. 接口中的public static final可以省略。
  10. 使用implements 类名。

接口被实现:

  1. 使用implements
  2. 一个接口被非抽象类实现,必须对所有的抽象方法都进行实现。
  3. 实现的方法必须是public的,因为重写权限不能变低。

接口在开发中的作用:

注意:接口在开发中的作用,类似于多态在开发中的作用

多态:面向抽象编程,不面向具体编程。降低程序耦合性,提高程序扩展力。

接口的作用:

因为类只能继承一个类,所以我们可以通过接口进行实现来实现多继承方式。面向接口调用,

面向接口编程,可以降低程序的耦合性,提高程序的扩展力。符合OCP开发原则。接口的使用离不开多态机制(接口+多态才可以达到降低耦合度。)

接口可以解调用者和实现者耦合,任何一个接口都有调用者和实现者。调用者面向接口调用,实现者面向接口实现。

接口类型 对象名 = new 实现者();

  1. 通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。
  2. 通过接口可以指明多个类需要实现的方法。
  3. 通过接口可以了解对象的交互界面,而不需了解对象所对应的类

接口的意义:

​  接口会出现,最关键的原因应该是Java中向上转型的出现,因为向上转型,子类中一些父类中不存在的方法(或者说不共用的方法)便不能继续调用了。这样就很麻烦,我们需要子类中的方法,但是这下该怎么办呢?

​  第一种在父类中加子类的方法。但是,这个方法在父类中其实真的没有必要,方法函数体都不需要。所以会用抽象方法,这样就有了抽象方法的诞生。可是就算这样了,问题还是没有解决,因为真的太麻烦了,如果有其他的子类要继承父类,也难免会有向上转型的时候,那么,这个时候难道要一直往父类中加抽象方法么?显然不合理!

​  于是就有了第二种方法,接口便诞生了,这也解释了为什么接口中都是抽象的方法!所以有了接口,子类中需要的方法,但是父类中没有的方法可以直接用接口来完成,也就不用再修改父类的方法,在多人合作完成一项工程的时候也更加的方便。

抽象类和接口的区别

区别点 抽象类 接口
定义组成 包含抽象方法的类 具体方法 变量 构造方法 抽象方法和常量
使用 子类继承抽象类 实现类实现接口
关系 抽象类实现接口 接口不能继承抽象类,可以继承多个接口
对象 通过抽象类的多态性产生实例对象
局限 只能单继承 没有
posted @   疯狂的豆包  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示