栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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者都可以飞,但又不是一类事物,就用接口。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号