抽象类和接口的区别 什么时候用接口 什么时候用抽象类

1相同点:

1都不能被实例化

2抽象类中的抽象方法和接口中的方法 都不能包含实现 但是都必须被子类实现

2不同点:

1)抽象类中的抽象成员必须是public修饰 接口中不需要 默认就是public

2)抽象类中可以有一些非抽象的方法,并且可以有实现部分,但是接口中的所有方法都不能有实现部分

3)一个类只能继承一个抽象类,但是可以继承多个接口

4)抽象类中可以包含字段,而接口不能

5)抽象类的子类可以不必全部实现基类的抽象方法,但是此时必须子类必须也是抽象类,就是用abstract来修饰类

6)实现了接口的类中 必须包含接口的所有属性和方法, 继承了抽象类的子类中,可以不必实现所有抽象方法,只不过这个子类也必须标记为抽象类

3下面谈谈什么时候用接口什么时候用抽象类

我很认同一位老哥说的以用为本。

首先定义一个基类Animal动物

子类Sparrow麻雀 Pig猪

1 )他们都有吃东西的行为,但是他们吃的都是食物food,并且吃完后体重都会增加,这是他们共同都有的行为 我将这个行为定义为抽象类的普通方法(复用代码,减少冗余代码

2 )麻雀有飞的行为,而猪没有,(特有的行为 我定义为接口,按需自行实现,麻雀实现fly接口,而猪不会飞无需实现

3 )他们都会走路,但是走路的实现方式不一样(我用抽象基类定义统一的方法声明,然后你们自行实现自己的走路方法,怎么走在子类中来控制

个人观点,欢迎指正

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容