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

如题所述

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

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


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

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

温馨提示:内容为网友见解,仅供参考
无其他回答

父类实例与子类实例的关系
那么对你的问题中,既然是父类和子类,首先从文字意义上就知道他们存在着父子关系,这和现实中一样,父子必有共性,在java中用extends关键字来标识这种关系,extends是扩展的意思。从这里我们不难看出一点:子类拥有比父类共强大的功能,或者更多的属性。就是说子类对父类进行了扩展,并且父类能做的事子...

...什么是递归关系?递归关系有几种?什么是交叠规则和分离规则?
递归关系就是对自身的引用,多媒体数据库中就是记录与记录之间的直接或间接的调用。递归关系有两种 一对多 多对多 至于分离和交叠规则 就是 ,父类实例与子类实体之间的关系。若父类的实例属于多个字类实体则是交叠规则,若父类实例至多属于一个子类实体则是分离规则。不用谢!^_^ ...

c#为什么要用子类实例化父类
c#要用子类实例化父类因为父类里有的东西,子类里一定有,而子类里有的东西,父类里不一定有。根据查找相关公开资料显示,声称是父类,但内容是子类是安全的。而声称是子类,但内容是父类的话,就可能会出现去访问不存在的成员之类的问题,所以compiler会要求你用一个明确的类型转换才能这么做。

父类和子类的关系是什么
public:可以被任意实体访问;protected:只允许子类及本类的成员函数访问;private:只允许本类的成员函数访问;private & public继承 => 子类无权访问;private & protected继承 => 子类无权访问;private & private继承 = > 子类无权访问;public成员所有的类都可以访问;private成员只有本类能访问;pro...

JAVA中 子类与父类构造方法的关系 个人理解
即遵循一个原则:子类的构造一定是在父类已构造的基础上!这句话要分为几种情况来理解(下面只讨论父类有构造函数):子类构造函数自动调用super() (也可以手动加上)但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中包含对super(args)的调用 一、父类含有无参构造函数 1、...

为什么在实例化子类的对象的时候会调用先调用父类的构
因为子类继承父类之后,获取到了父类的内容(属性\/字段),而这些内容在使用之前必须先初始化,所以必须先调用父类的构造函数进行内容的初始化.

c++中 子类对象与父类对象的内存关系
分别创建A,B对象的话,二者的地址关系是没关系的。但是对于创建的B对象来说,他的前半部分相当于一个A对象,然后紧挨着下面是自己的数据成员,如下图:

c#子类和父类的关系
明确答复:1.子类可以使用类中的方法和属性 2.如果父类中抽象方法,子类必须进行重写,除非子类也是抽象类 3.如果父类中有虚方法,子类可以进行重写或直接使用 4.子类只能继承一个父类

子类实例化,调用父类构造器,会实例化父类吗
完整的状态中。试想,如果没有这个约束,那么子类的某个继承自父类的方法可能会使用到父类中的一些变量,而这些变量并没有进行初始化,从而产生一些难以预料的后果。也因此,当一个类的构造方法是 private 时,它是不可被 extends 的,因为子类构造方法难以调用到这个父类的构造方法。

java 子类实例化时是否同时存在一个父类对象.
其实你可以这么理解 创建了一个子类对象时,在子类对象内存中,有两份这个变量,一份继承自父类,一份子类。绝对不会产生父类对象,父类中的成员被继承到子类对象中,用指向子类对象的父类引用调用父类成员,只不过是从 子类对象内存空间中找到那个被继承来的父类成员,也就是说实质是用子类对象调用...

相似回答