java 子类实例化时是否同时存在一个父类对象.
假如父类A中有个int a = 1;
子类B继承A,同时B中覆盖个int a = 2;
运行:
A test = new B();
system.out.println(test.a);
结果是1,是父类中的属性.这个时候是否存在父类对象,我的理解是存在的.
我又试,把父类用抽象abstract修饰,按理说abstract累不能实例化吧,肯定不能得到父类中的a属性,结果还是一样的.
怎么理解.
是不是创建子类对象,肯定会出现一个父类的对象?
你的意思是,创建一个子类,同时也创建了一个父类,,可以这么理解吗?
追答可以这样理解吧,创建子类对象个过程中也创建了一个匿名的父类对象。
java 子类实例化时是否同时存在一个父类对象.
不会产生父类对象,只是用了父类的构造函数而已,并不是用到构造函数就会产生对象,构造函数只是起对象初始化作用的,而不是起产生对象作用的,如果new A();即只有new语句才会产生父类A的对象。变量是静态绑定 ,方法是动态绑定。 这里面变量在编译期间实现了变量调用语句与变量定义赋值语句的绑定,绑...
JAVA实例化子类时候同样也实例父类,O bject是所有类的父类,难不成实 ...
实例化子类的时候会调用父类的构造方法, 所有类都是Object的子类,在实例化的时候都会调用Object的构造方法,由于Object中有很多方法很多类都会用到,比如toString(),为了保证这些方法所以才会设计Object这个类。
new一个子类的时候,父类对象有没有生成
有父类对象的生成,要不你怎么可以继承父类中的成员变量呢!在内存中生成一个子类SubClass的对象区域,在此区域当中还包含着一个父类(Base)对象. (如下图)
父类对象由子类实例化是什么意思
既然如此那么当我们使用子类实例化一个对象子后,那么这个对象同样也拥有了父类的所有特性,所以这时如果我们将这个子类的对象进行类型转化为父类的对象是完全可以的,为什么呢?因为子类的对象拥有父类的一切特性。而Person p = new Student()这个语句其实就相当于隐式声明了一个子类对象然后将其隐式转化...
子类实例化,调用父类构造器,会实例化父类吗
究其原因,想必是 Java 语言设计者,要求子类有责任保证它所继承的父类尽快进入到一个稳定、完整的状态中。试想,如果没有这个约束,那么子类的某个继承自父类的方法可能会使用到父类中的一些变量,而这些变量并没有进行初始化,从而产生一些难以预料的后果。也因此,当一个类的构造方法是 private 时...
Java子类是否会有父类的private方法和属性
那么:分析内存后,会发现,当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后再父类对象的外部放上子类独有的属性,两者合起来成为一个子类的对象。所以:子类继承了父类的所有属性和方法或子类拥有父类的所有属性和方法是对的,只不过父类...
为什么在实例化子类的对象的时候会调用先调用父类的构
因为子类继承父类之后,获取到了父类的内容(属性\/字段),而这些内容在使用之前必须先初始化,所以必须先调用父类的构造函数进行内容的初始化.
java 子类调用父类构造方法会创建父类对象吗
调用初始化方法并不代表会生成对象,你的java代码中出现new关键字加上构造方法的调用,只会生成一个对象,其父类对象不会生成,所以调用父类为抽象类的构造方法完全是合理的。抽象类中的构造方法其实是用来给继承的子类来用的,因为构造方法相当于初始化方法,当子类调用构造方法时必须调用父类构造方法,...
如何理解Java中"父类对象由子类实例化
父类为:Animal,成员变量有,名字,性别,颜色 子类为:Dog ,成员变量有,[名字,性别,颜色],尾巴长度,舌头大小。定义一个变量A Animal A = new Dog ();这样,虽然实例化用Dog(),但我只需要使用[名字,性别,颜色]这个变量,而不关心{尾巴长度,舌头大小}这2个变量的情况。在某些场合下...
...了父类的默认构造函数,这代表创建了一个父类对象吗?
没有创建父类对象,D的构造函数里隐式的有一个super();代表父类的构造函数,函数里输出了C,对象是new出来 ,构造函数只是创建对象后进行初始化, 你的代码里只new了一个D 你的理解是调用构造函数即创建了一个对象,理解有问题.对象的创建是new ,构造函数只是初始化,即在创建对象的同时执行了构造函数....