老蔡的个人专栏正式成立,以后工作中遇到的技术问题,或者生活中对一些事物的见解,都会和大家分享!独乐乐不如众乐乐!

抽象类与接口的区别

JAVA BlandonTsai 1806℃ 0评论

相同点

(1)接口和抽象了都不能被实例化,它们都位于继承树的顶端,用于被其他的类实现和继承。

(2)接口和抽象类都是可以包含抽象方法的,实现接口或是继承抽象类的普通子类都必须实现这些抽象方法。

不同点

(1)接口是公开的,里面不能有私有的方法或者变量,是用于让别人使用的;而抽象类是可以有私有方法或者私有变量的。

(2)实现接口一定要实现接口里定义的所有方法;而实现抽象类可以有选择地重写需要用到的方法。

(3)接口只能包含抽象方法,不能包含已经提供实现的方法;抽象类则完全可以包含普通的方法。

(4)接口不能定义静态方法;抽象类完全可以定义静态方法。

(5)接口中只能定义静态常量Field,不能定义普通的Field;抽象类既可以定义普通的Field也能定义静态常量Field。

(6)接口不能包含构造器;抽象类中可以包含构造器,抽象类中的构造器并不是用于创建对象的,而是让其子类调用这些构造器来完成抽象类的初始化操作。

(7)接口里面不能够包含初始化块;但是抽象类里面则完全可以包含初始化块。

(8)一个类最多只能有一个直接父类,包括抽象类;但是一个类可以直接实现多个接口,通过实现多个接口可以弥补Java中的单继承的不足。

转载请注明:似水流年 » 抽象类与接口的区别

如果觉得文章还不错,欢迎打赏
喜欢 (0)or分享 (0)
头像
发表我的评论
取消评论