java中抽象类和接口的区别及适用场景

java中抽象类和接口的区别及适用场景,第1张

java中抽象类和接口的区别及适用场景

文章目录
  • 抽象类
    • 声明
    • 抽象类无法实例化
    • 作用
  • 接口
    • interface
    • implements
    • 一类多接口
    • 接口继承
  • 二者的区别
  • 二者的适用场合
    • 抽象类适用场合
    • 接口的适用场合

抽象类 声明

把一个方法声明为 abstract ,表示它是一个抽象方法,本身没有实现任何方法语句。因为这个抽象方法本身是无法执行的。把方法声明为抽象方法的目的是让子类去覆写它。

即:如果一个类定义了方法,但没有具体的执行代码,这个方法就是抽象方法。抽象方法用 abstract 修饰。

如果一个类包含了抽象方法,那么这个类也必须被声明为抽象类 (abstract class)。

抽象类无法实例化

抽象类中的抽象方法无法被执行,因此抽象类无法实例化。

作用

抽象类本身被设计成只能用于被继承,继承了抽象类的子类,必须实现其定义的抽象方法才可以通过编译。因此抽象类实际上相当于定义了一种“规范”。

接口 interface

如果一个抽象类没有字段,所有方法都是抽象方法,那么就可以把该抽象类改为接口:interface

在java中,使用 interface 可以声明一个接口。

implements

当一个具体的类去实现一个 interface 时,需要使用 implements 关键字。

一类多接口

在 java 中,一个类只能继承自另一个类,不能从多个类继承,但是一个类可以实现多个接口。

接口继承

一个接口可以继承自另一个接口,使用 extends 关键字。

二者的区别 抽象类接口构造方法可以有构造方法不能有构造方法一个类只能继承一个抽象类一个类可以实现多个接口普通成员变量可以有普通成员变量没有普通成员变量静态变量可以包含静态变量可以包含静态变量静态方法可以包含静态方法不能包含静态方法实现方式用implements实现用extends实现非抽象方法可以有非抽象方法不能有非抽象方法(通过 default 关键字可以实现默认方法) 二者的适用场合 抽象类适用场合
  1. 当关注一个类的本质时或者说与其父类、子类之间的联系时,使用抽象类。
    例如:车类有很多子类,汽车、卡车、自行车。
    他们的共同特征是有轮子、可以走,那么轮子就可以在父类中声明。然后在子类中表示出他们的区别。
  2. 想要约束子类具有共同的特征与行为,又能拥有实例变量时,使用抽象类。
接口的适用场合
  1. 当关注一个方法、 *** 作、功能或是行为时,使用 interface。
    例如:某个方法(行为)是 fly(),这个行为可以被包含在多个类中(如飞机、鸟)。
    但飞机和鸟往往不会被算在同一个父类下。这种情况我们就设置一个接口 Fly{},用鸟、飞机两个类来实现这个接口。
  2. 当一个类需要实现多个功能,但多个功能之间没有联系时。(例如 Human 类需要实现 sleep 、eat、drink 功能)。
  3. 约束多个实现类具有统一的行为,但是不在乎每个实现类如何具体实现时,使用接口。
    例如:鸟、飞机、蚊子。3者都可以飞,但又不是一类事物,就用接口。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4670438.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-06
下一篇2022-11-06

发表评论

登录后才能评论

评论列表(0条)

    保存