父类实例与子类实例的关系

父类实例与子类实例的关系,第1张

首先你要明白一点:在面向对象语言中(java、c++、c#、smalltalk...)类是具有相同特征、属性(java中类的成员变量)和行为(java中类的方法)的事物的抽象数据库结构,一个类代表着这类事物所拥有的性质和行为。那么对你的问题中,既然是父类和子类,首先从文字意义上就知道他们存在着父子关系,这和现实中一样,父子必有共性,在java中用extends关键字来标识这种关系,extends是扩展的意思。

从这里我们不难看出一点:子类拥有比父类共强大的功能,或者更多的属性。就是说子类对父类进行了扩展,并且父类能做的事子类也能做(非父类私有),除了父类私有的方法和属性,就像我们父亲的手是用来给父亲吃饭的而不是给我们吃饭的一样,在子类中我们可以引用父类的方法或者对付类的方法重新定义(重写),在父类被使用的场合可以使用子类(产生多态性),我们可以声明在某个地方使用某个类,而具体用的时候我们用其子类的实现来做。

一般某个类的定义必有其功能和意义,而其子类有着跟多更强大的功能(如果子类和父类只能完成一样的功能那么这样的子类就失去了存在的意义,可以存在但没意义)。父类中被标识为public和protected的属性和方法可以再子类中直接引用,而私有的属性和方法只能通过其他公有方法去访问。

继承使得类的体系结构变得庞大,功能也变得强大,但这也使得类的个数急剧增大,这时就需要使用接口,C++中类可以多重继承,而java中不允许,而是通过接口来实现同样的功能,正因为有这样的机制(继承和接口)面向对象语言中才会产生各种各样如花似锦的设计模式来使得我们的设计变得精妙。

子类重写方法是在基类有此方法重写,那么声名一个子类的对象,调用的方法是子类的方法,

通过base转而调用父类中的方法,最终目的还是调用父类中的方法。

还有重写方法可以改变基类方法的作用,可以实现其他的效果,重写方法,和基类同名方法是两个不同实现的方法,

最主要你要分清楚 重写跟基类中的方法不一定实现同样的效果,还有基类也不一定知道派生类中是否重写了这个方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7494161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存