java基础之接口和抽象类的区别,以及使用选择
2023-12-29 16:14:09
目录
我们从以下方面来谈区别
方法定义
接口和抽象类,最明显的区别就是接口只是定义了一些方法而已,在不考虑Java8中default方法情况下,接口中只有抽象方法,是没有实现的代码的。 (Java8中可以有默认方法)
修饰符
抽象类中的抽象方法可以有public、protected和default这些修饰符,而接口中默认修饰符是public。不可以使用其它修饰符。
构造造器
接口不能有构造器,因为接口是对行为的描述,而不是具体的实例化对象。抽象类可以有构造器,用于被子类调用。
继承和实现
接口之间可以通过
extends
关键字进行继承,一个接口可以继承多个接口。抽象类之间可以通过extends
关键字进行继承,一个类只能继承一个抽象类。
单继承,多实现
一个类可以实现多个接口,但只能继承一个抽象类。接口支持多重继承,即一个接口可以继承多个其他接口。
public interface MyInterface extends MyInterface2,MyInterface3{}
职责不同
接口和抽象类的职责不一样。接口主要用于制定规范,因为我们提倡也经常使用的都是面向接口编程;而抽象类主要目的是为了复用,比较典型的就是模板方法模式。
总结来说,接口主要用于制定规范和定义行为,使得代码更加灵活和可扩展;抽象类主要用于复用和提供模板,定义共享的方法和属性,并允许子类对其进行个性化定制。
所以当我们想要定义标准、规范的时候,就使用接口。当我们想要复用代码的时候,就使用抽象类
般在实际开发中,我们会先把接口暴露给外部,然后在业务代码中实现接口。
如果多个实现类中有相同可复用的代码,则在接口和实现类中间加一层抽象类,将公用部分代码抽出到抽象类中。可以参考下模板方法模式,这是个很好的理解接口、抽象类和实现类之间关系的设计模式.
文章来源:https://blog.csdn.net/qq_62262918/article/details/135231925
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!