用子类构造方法实例化的父类对象怎么使用子类成员变量
时间: 2024-03-18 22:18:12 浏览: 67
这个问题属于编程问题,可以直接回答。用子类构造方法实例化的父类对象需要进行向下转型,才能使用子类成员变量。例如:
```
Parent parent = new Child();
Child child = (Child) parent;
child.childVar = "hello";
```
这样就可以使用子类成员变量了。
相关问题
当对象被实例化后,堆内存先开辟一块空间给子类对象,然后先隐式初始化父类普通变量,然后是子类普通变量,随后子类构造方法在栈中被开辟内存,然后父类构造方法在super语句执行后被开辟内存,接着显式初始化父类普通变量和构造方法,父类构造方法弹栈之后再回到子类构造方法,进行子类显式初始化和构造方法
的执行,最后子类构造方法弹栈结束,对象实例化完成。
需要注意的是,如果子类构造方法没有显式调用父类构造方法,则会默认调用父类的无参构造方法,如果父类没有无参构造方法,则会编译报错。此外,如果父类构造方法中有耗时操作或者复杂的初始化操作,可能会影响子类对象的实例化速度。因此,在设计类的时候,需要考虑构造方法的执行顺序和耗时操作的影响。
无关。 点击复制后,将打开C知道体验页 | 当对象被实例化后,堆内存先开辟一块空间给子类对象,然后先隐式初始化父类普通变量,然后是子类普通变量,随后子类构造方法在栈中被开辟内存,然后父类构造方法在super语句执行后被开辟内存,接着显式初始化父类普通变量和构造方法,父类构造方法弹栈之后再回到子类构造方法,进行子类显式初始化和构造方法的执行,最后子类构造方法弹栈结束,对象实例化完成。以上顺序有误,请指正并修改
当对象被实例化后,堆内存先开辟一块空间给子类对象,然后先隐式初始化父类普通变量,然后是子类普通变量,随后父类构造方法在栈中被开辟内存,然后父类构造方法在super语句执行后被执行,接着显式初始化父类普通变量,父类构造方法执行完成后再回到子类构造方法,进行子类显式初始化和构造方法的执行,最后子类构造方法弹栈结束,对象实例化完成。
阅读全文