抽象与接口 (常见面试问题)

本文对比了抽象类与非抽象类的区别,强调了抽象类在系统扩展和维护方面的优势,并详细解析了接口的功能及其与抽象类的不同之处。

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

今天在论坛上看见网友提问

“抽像类和非抽像类有什么区别!抽像类相对于非抽像类有什么优点!如果可以的话!还想再问一下!什么接口!”

这也是 面试的时候 面试官常提起的问题

我个人总结下

 

抽象类 顾名思义就是抽象的类,具体(非抽象)类是对对象的抽象,而抽象类是对类的抽象。

抽像类不能定义该类的对象,但可以定义继承他的非抽象类对象。
非抽像类可以定义该类的对象。

优点就是抽象,利于系统的扩展和维护。因为JVM可以在运行时动态决定该使用哪一个继承这个抽象类的具体类。

比如我有个抽象类A,定义了通用的数据库操作(抽象的操作),
类B(用于MySQL)继承类A并且实现了类A的数据库操作方法(用于MySQL的具体的操作)
类C(用于Oracle)也继承类A并且实现了类A的数据库操作方法(用于Oracle的具体的操作)
现在业务逻模块需要对数据库进行操作,我们在业务逻辑操作的时候用抽象类A,而不是具体的类B或C
这样业务逻辑就做到了与具体数据库产品无关。
当我们现在用的数据库是MySQL的时候,我们只需将类B传入业务逻辑模块中。JVM自己会判断对数据库的操作是哪一款数据库产品。
但当我们现在环境变了,是用Oracle的时候,我们也只需将类C传入业务逻辑模块中。

其中业务逻辑代码是并不会被修改的。


当然 接口也有这样的功能,而且接口比抽象类更抽象。抽象类里面还可以定义具体方法,只要子类不覆盖这个方法,那么使用的还是父类的方法逻辑。而接口里面只有方法的声明,具体的方法逻辑由实现接口的类来决定。


1.接口定义了实现接口的类的方法,这算是一种自定义的规范或标准,类必须实现每个接口的方法。
2.接口允许多继承接口,一个类允许实现多个接口。但类必须实现每个接口的方法。弥补JAVA中类之间只能单继承的缺失。
3.实现类级别的多态,也就是说可以定义一个接口,但你要使用哪个实现类可以由自己决定,或程序在运行时
由JVM决定。这是为了设计的解耦,为了系统易于维护和扩展,正如我上面所述。接口比抽象类更抽象。以上的抽象类A也可以定义成接口A 


如果要设计出优秀的系统,必须要学会使用好这些东西。OOD经常提起的就是 针对抽象和接口编程 

系统需要高内聚 低耦合 易于扩展 和 维护 这些都是良好设计的要求。建议同学们去看下 设计模式 就知道 抽象类和接口的作用了。

 

以上是我的经验之谈 有什么不对之处 还请 优快云 网友们提出 TKS

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值