Java中接口和抽象类有什么区别?
回答这个问题之前先回答以下的问题:
接口是什么?接口的特点有哪些?
接口是对事物动作的抽象,比如猫会跑会吃饭,狗会跑会吃饭,人会跑会吃饭,他们有共同点功能就是跑和吃饭,我们可以把跑和吃饭定义成接口,而人猫狗,只需要实现这个接口中的方法,这就是Java中的一个接口可以多个实现;另外Java中类是单继承的,比如父类和子类,子类只能继承一个父类。
接口的特点:
接口中只存在public abstract方法
接口可以实现多个
接口中的成员变量只能是不可变常量final
抽象类的是什么?抽象类的特点有哪些?
抽象类是一种相对于类来说是抽象的概念,类是可见可触摸有具体特征的事物,抽象类则是思维逻辑中的事物,举个例子,花相对于玫瑰来说是抽象的概念,植物对于花来说又是更抽象一点的事物。
抽象类的特点:
- 抽象类不能被实例化
- 抽象类和普通类一样只能被单继承,抽象类被继承后必须重写继承的方法,除非子类也是抽象类。
- 抽象类中的成员变量和普通类可以是各种类型的
- 抽象类中可以有抽象方法也可以有非抽象方法
- 含有抽象方法的类必须是抽象类
public