java接口和抽象类的区别

抽象类和接口的区别?
1、成员区别:
   抽象类:
         成员变量:可以是变量,也可以是常量
         成员方法:可以抽象,也可以非抽象
         构造函数:有
   接口:
         成员变量:只能是常量
         成员方法:只可以抽象
         构造函数:没有构造函数

2、关系区别
类与类:继承,单继承
类与接口:实现,单实现,多实现
接口与接口:继承,单继承,多继承

3、设计理念区别
抽象类:抽象类中定义的是该继承体现的共性功能。
接口:接口重定义的是该继承体系的扩展功能。

比如猫和狗,都是动物。都具有性别、年龄等属性,同时具有吃饭方法,但是吃的内容不一样,我们可以把它定义成一个抽象方法。
但是不是所有的猫都会挖洞,只有狗可以挖洞,对于狗是特有的。
所以可以把性别,年龄和吃饭都定义在动物抽象类中,而把挖洞方法定义成一个接口,把具有这个功能的才实现这个功能,不是所有都具备的。

你可能感兴趣的:(Java)