25、抽象类

本文介绍了抽象类与接口的相同点和不同点,包括接口只能定义方法而抽象类可以有方法实现,以及一个类可以实现多个接口但只能继承一个抽象类。同时,文章探讨了抽象类与接口在设计上的适用场景,并指出抽象类不必有抽象方法,以及抽象类不能被final修饰的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

25、抽象类

25.1、接口和抽象类的相同点和不同点?

相同点:

  • 都不能被实例化。
  • 接口的实现类或抽象类的子类需实现接口或抽象类中相应的方法才能被实例化。

不同点:

  • 接口只能有方法定义,不能有方法的实现,而抽象类可以有方法的定义与实现。
  • 实现接口的关键字为 implements,继承抽象类的关键字为 extends。一个类可以实现多个接口,只能继承一个抽象类。
  • 当子类和父类之间存在逻辑上的层次结构,推荐使用抽象类,有利于功能的累积。当功能不需要,希望支持差别较大的两个或更多对象间的特定交互行为,推荐使用接口。使用接口能降低软件系统的耦合度,便于日后维护或添加删除方法。

25.2、简述抽象类与接口的区别

抽象类:体现的是 is-a 的关系,如对于 man is a person,就可以将 person 定义为抽象类。

接口:体现的是 can 的关系。是作为模板实现的。如设置接口 fly,plane 类和 bird 类均可实现该接口。

一个类只能继承一个抽象类,但可以实现多个接口。

25.3、抽象类必须要有抽象方法吗?

不需要,抽象类不一定非要有抽象方法。

示例代码:

abstract class Cat {
    public static void sayHi() {
        System.out.println("hi~");
    }
}

上面代码,抽象类并没有抽象方法但完全可以正常运行。

25.4、、普通类和抽象类有哪些区别?

普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能直接实例化,普通类可以直接实例化

25.5、抽象类能使用 final 修饰吗?

不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值