阿瑟Java (16):抽象类和接口的对比

文章详细对比了Java中的抽象类和接口,包括它们的声明方式、实现方式、构造器、方法类型以及多继承特性。接口主要用于约束类的行为,抽象类则用于代码复用,提供子类的通用功能。在选择时,关注行为时优先考虑接口,关注本质时选择抽象类。
摘要由CSDN通过智能技术生成

PS:黑色加粗为重点关注内容

相同点:

  • 抽象类和接口都不能实例化

不同点:

参数

抽象类

接口

声明

抽象类使用 abstract 关键字声明

接口使用 interface 关键字声明

实现

子类使用 extends 关键字来继承抽象类。

子类使用 implements 关键字来实现接口。

构造器

抽象类可以有构造器

接口不能有构造器。

方法的类型

既有抽象方法,还可以有已经实现的普通方法

只有抽象方法

多继承

一个类最多只能继承一个抽象类

一个类可以实现多个接口

成员变量

抽象类的成员变量可以是任意类型

接口的成员变量默认都是 public static final

1.8的特性

通过使用 default 修饰方法,定义一个默认的方法,实现类可以直接调用,不用强制实现

抽象类和接口的本质:

  • 接口
    • 接口的目的是对类的行为进行约束,是一种行为的规范;
    • 强制要求不同的实现类具有相同的方法;
    • 只约束行为的有无,不限制行为的具体实现
  • 抽象类
    • 抽象类的目的是代码复用
    • 通常会实现子类的通用特性,而将子类的差异化特性进行抽象,交由子类去实现
  • 抽象类和接口的选择:
    • 关注一个事物本质的时候,用抽象类;关注一个行为的时候,用接口
    • 行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量少用抽象类
    • 抽象类通常是:需要定义子类的行为,又要为子类提供通用的功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值