JAVA-初步认识-第八章-继承-定义继承
一.
接下来描述继承什么时候使用?
产生关系,提高复用性。什么时候写继承呢?
有这么一种思想,A有我们所需要的功能,继承它,我们就不需要定义了,这可以提高代码复用性。一定要注意,千万不要为了提高复用性,而继承。
写继承是要依赖于关系的,没关系就不需要继承。
先说一下为了提高复用性而使用继承的弊端或者误区,观看下面的截图。定义完DemoA和DemoB后,我们发现都具有show1(),那么直接用B继承A,这样一来,B中就不需要定义show1()方法了。但是show2()是B功能吗?如果不是,就不应该进来(由于继承的关系,所有的成员都一起来了),这就是问题,这种继承是不应该存在的。仅仅是为了拿别人的东西而继承。这种继承不允许,太危险。
那应该怎么办呢?之所以会有这样的想法,是因为DemoA和DemoB里面有共性内容,本来A和B是两兄弟,现在让他们成为父子,这不太合适。两人找同一个父类,就完事了。对于两者相同的部分,进行抽取重新建类再继承,显得更为合理。
如果DemoA中的方法,DemoB全都具备,那么就产生了继承。
这时再来看继承,有点像集合的意思,不是要求交叉,而是要求包含。
怎么看待所属关系,狼和狗都属于犬科,它们是犬科中的一种。那我们就可以说,狼和狗这样的事物就可以继承犬科,它们具备犬科所有的特征,这就存在着继承。
继承还有所发展,不光有基础的,还有更多的其他的。
判断到底是否是一种?可以这么做,直接操作继承,然后被继承的类,或者说父类中的功能(继承特指功能么?)是否子类中都应该具备。如果有些,它不应该具备,那就不存在继承。这种方法比较笨,先要写成继承,然后再去判断。
解析:剖析一下父类和子类。从已有的讲解来看,父类中的内容要比子类中少,父类是抽取形成的。但是抛开这些代码内容而言,父类所能包含的意义更广,因为描述比较少,显得模糊,这样就能代表更多的东西。
狗,狼抽取一下形成了犬科,老虎,狮子抽取一下,形成了猫科。如果再将猫科和犬科往上抽取,形成就是哺乳动物。
父类比较模糊,子类比较具体。我们要找到对象之间的关系,为什么说的是对象?