Java 向上投射;为什么我会得到输出11
所以我运行了这段代码,我不明白为什么我得到了输出11:Java 向上投射;为什么我会得到输出11,java,inheritance,polymorphism,upcasting,Java,Inheritance,Polymorphism,Upcasting,所以我运行了这段代码,我不明白为什么我得到了输出11: class Parent{ protected int counter; public Parent(){counter++;} } class Child extends Parent{ public Child(){ System.out.print(counter);} } } public class Test{ public static void main(String [] args){
class Parent{
protected int counter;
public Parent(){counter++;}
}
class Child extends Parent{
public Child(){
System.out.print(counter);}
}
}
public class Test{
public static void main(String [] args){
Parent p = new Child();
System.out.print(p.counter);
}
}
这将创建子类的一个实例。这必须执行子类的构造函数。但在此之前,它将运行父类的构造函数。这将计数器的值设置为1
接下来,当运行子类构造函数时,它将打印1
最后一部分是琐碎的。调用System.out.print(p.counter)代码>打印另一个1
。因此,结果是11
摘要:父类的构造函数将在子类的构造函数之前执行
顺便说一句,这与向上投射无关。这是继承
这将创建子类的一个实例。这必须执行子类的构造函数。但在此之前,它将运行父类的构造函数。这将计数器的值设置为1
接下来,当运行子类构造函数时,它将打印1
最后一部分是琐碎的。调用System.out.print(p.counter)代码>打印另一个1
。因此,结果是11
摘要:父类的构造函数将在子类的构造函数之前执行
顺便说一句,这与向上投射无关。这是继承
Parent p = new Child();