共计 851 个字符,预计需要花费 3 分钟才能阅读完成。
抽象类的三个个性(abstract)
- 抽象类不容许被实例化只能被继承,也就是说你不能 new 进去一个抽象类的对象。
-
抽象类外面有两种属性和办法
- 形象属性和办法:只申明,不实现
- 非形象属性和办法:申明 + 实现
- 子类实现形象办法:子类必须实现父类中的所有形象办法。
接口的三个属性(interface)
- 接口不能蕴含属性
- 接口只能申明办法,不能蕴含实现代码
- 类实现接口类的时候,必须实现接口中申明的所有办法
抽象类和接口的区别
- 抽象类是对成员变量和办法的形象,是一种
is-a
关系,是为了解决代码复用问题
is-a: 代表类与类之间的继承关系
比方:猫和狗都是动物,都继承动物的个性。(所谓动物的个性就相当于抽象类中的形象属性和办法、猫和狗都具备动物的个性, 即实现动物的形象属性)
- 接口仅仅是解决对办法的形象 (抽象类 – 类的形象),是一种
has-a
关系,是为了解决解耦问题,进步代码的扩展性
has-a: 代表对象和它的属性之间的从属关系
同一个类的对象,通过它的属性的不同值来区别
比方: 小明和小红 都是同一个类(Person) 然而他们有不同的属性值(Person xiaoming = new Person("小明"))是一个整体和局部的关系
两者再区别
- 抽象类 – 强调它是什么
B 继承 抽象类 A 并实现了 A 中的形象属性和办法, 那么它就属于 A
比方 鸟(有翅膀、尖嘴、会下蛋) - 继承 - B(会说人话):B 继承鸟类这个抽象类那么他就得实现鸟类得相干个性,所以它就是一只鹦鹉 - 接口 – 强调它有什么性能
Man 和 Woman 实现 接口 Person 重写 Person 中的相干办法来,然而赋予了不同内容, 进而有了不同的能力
总结
- 抽象类是为了解决代码复用问题
比方你要写所有的很多鸟相干的类、你把每个鸟都有的属性写在抽象类中、而后再在子类当中写入不同的鸟所特有的属性,这样就不必再在子类中增加这些属性。使得代码高度复用
- 接口是为了解决形象问题
比如说你要写王者光荣里所有的的英雄的技能,假如这些英雄都只有 3 个技能,那么咱们就在接口中定义 (技能一、技能二、技能三) 即可、而后每个英雄的技能在子类中具体实现即可。
正文完