public class P23 {
P23() {
print();
}
void print() {
System.out.println("A");
}
}
class B2 extends P23 {
int i = 0; // Math.round(3.5f);
public static void main(String[] args) {
System.out.println("inside main");
P23 a = new B2();
a.print();
}
void print() {
System.out.println(i);
}
}
不打印任何东西! 我错过了什么? 请帮我理解如何调试这个。
答案 0 :(得分:2)
如果这两个类都在同一个源文件中,您应该使用main方法将类设为公共类(即将class B2
更改为public class B2
并将public class P23
更改为{ {1}})。如果它们不在同一个源文件中,您仍应将class P23
公开。
修复后,以下行的输出为:
B2
在对System.out.println("inside main"); // prints 'inside main'
P23 a = new B2(); // prints "0" since the constructor of B2 calls the constructor of P23
// which executes B2's print()
a.print(); // prints "0" since B2's print() is executed
的两次调用中,调用子类B2的print
方法,因为print
的运行时类型为a
。
因此输出
B2
答案 1 :(得分:0)
public class P23
{
P23() { print(); }
void print() { System.out.println("A"); }
public static void main(String[] args)
{
System.out.println("inside main");
P23 a = new B2();
a.print();
}
}
class B2 extends P23
{
int i = 0; //Math.round(3.5f);
void print()
{
System.out.println(i);
}
}