软件工程,软件色痕迹遵循的目标
一个中心,两个基本点
可扩展性和可维护性
继承
一个对象多种形态,由于继承产生了多态
Animal a = new Bird();
主观认为 客观存在
编译时类型 运行时类型
成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边
(和构造函数性质类似,当作子类是对父类的重写继承,既能直接用子类,又能当作父类用,最终子类会按父类进行编译为父.Class(子类) ,这只是我自己的理解)
(1)我们可以把子类对象当作父类对象来看,我们一旦这样做了,那么就只能访问父类中有定义的属性和方法。
(2)如果子类覆盖了父类的方法,我们把子类对象当作父类对象来看时,去调用这个方法时,调用的是子类覆盖后的方法。
接口
这个多态不是单一继承下的多态甚至可以在单一继承序列下扩展新的功能
Bird implements Sing
Sing s = new Bird; 鸟就变成了 唱歌态
People implements Sing
Sing s1 = new People; 人就变成了 唱歌态
在不同情形下,创建不同的需求
让一个类不改变现有继承序列的前提下来扩展出新的功能,而这个新功能的扩展不是简单的学习一个新的东西就行,而是要找到这个东西的组织。(将所创作的东西归归类,唱歌类,跳舞类;我是上帝,我创建了不同的物种,花鸟鱼虫,各自都有不同的天赋,统一管理起来麻烦,然后就你创建了一个 interface Sing; 让一部分物质去实现Sing接口,然后我的小弟去捏能发出不同声音的嗓子;突然有一天很无聊,想听子孙们唱歌,然后就Sing s = new (等待一个子孙);然后躺在椅子上拿起耳机(s.toSing());这只是我自己的理解)
想提升锻炼对接口继承的使用,建议学习GOF23设计模式