目录
接口和抽象类的区别
1、共性
不断的进行抽取,抽取出抽象的,没有具体实现的方法,都不能实例化(不能创建对象)
2、区别
(1)类与接口是实现关系,而且是多实现,一个类可以实现多个接口,类与抽象类是继承关系,Java中的继承是单一继承,多层继承,一个类只能继承一个父类,但是可以有爷爷类
(2)区别2: 成员
a.成员变量 抽象类可以有成员变量,也可以有常量 接口只能有常量,默认修饰符public static final
b.成员方法 抽象类可以有抽象方法,也可以有非抽象方法 接口只能有抽象方法,默认修饰符 public abstract
c.构造方法 抽象类有构造方法,为子类提供 接口没有构造方法
d.设计层面 抽象类体现继承关系(is a),抽象类和派生类是典型的IS-A关系,即"子is-a父"。 interface可以多实现,不要求实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已,它主要描述的是类型间的行为合同,接口和它的实现类之间是典型的"CAN-DO"关系,即"子CAN-DO父"。
总结:
继承是一个 "是不是"的关系,而接口实现则是 "有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如狗是否能钻火圈,能则可以实现这个接口,不能就不实现这个接口。
3、问答
Q1:接口是否可以继承接口? A1:可以。
Q2:抽象类可以实现(implement)接口吗? A2:可以。
Q3:抽象类可以继承实体类吗? A3:可以。
Q4:抽象类可以有静态的main方法吗? A4:可以。
Q5:抽象类与普通类的区别是? A5:(1)、不能创建实例对象;(2)允许有abstract方法。换言之----------抽象类是不能实例化的普通类,如果有abstract方法,必须在子类中重写。
Q6:抽象类为什么不能实例化对象? A6:https://zhuanlan.zhihu.com/p/95406830
Q7:abstract和final能共用吗? A7:抽象类需要被继承才能使用,而被final修饰的类不能被继承,所以不能共用。