作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个向上转型演示,我不明白这段代码是如何工作的,或者我可以更具体地说为什么在派生类完成调度时也调用基类的构造函数。甚至没有调用基类的构造函数。除了如何调用基类的构造函数之外,我什至没有在任何地方使用 super 关键字。
class Base{
int value =0;
Base(){
addValue();
}
void addValue(){
value+=10;
}
int getValue(){
return value;
}
}
class Derived extends Base{
Derived()
{
addValue();
}
void addValue(){
value+=20;
}
}
class Test{
public static void main(String args[]){
Base b=new Derived();
System.out.println(b.getValue());
}
}
最佳答案
当您创建新的 Derived
对象时,将调用其构造函数。由于Derived
有一个父类(super class)Base
,它的构造函数将首先被调用。在构造函数中,将调用重写的方法 addValue
,从而得到临时值 20。之后,调用 Derived
的 addValue
并向 value
添加另外 20。最终结果是40。
由于您自己没有使用 super
调用父类(super class)的构造函数,Java 会自动执行此操作:
Derived() {
super();
addValue();
}
关于java - 这个升级演示如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636345/
我是一名优秀的程序员,十分优秀!