📅  最后修改于: 2023-12-03 15:10:15.935000             🧑  作者: Mango
UGR Net CS是印度的全国级别考试,第47个问题是关于编程的,让我们一起看看。
以下是一个Java程序的代码段,它的输出是什么?
class A {
int x, y;
A() { x=0; y=0;}
A(int i, int j){
x=i;
y=j;
}
void print(){
System.out.println(x + " " + y);
}
}
class B extends A{
int z;
B(){super(); z=0;}
B(int i, int j, int k){
super(i,j);
z=k;
}
void print(){
super.print();
System.out.println(z);
}
}
class Main {
public static void main(String args[]){
A a=new A(3,4);
B b=new B(1,2,3);
a.print();
b.print();
}
}
A类和B类都具有public作用域,并且在main函数中创建了一个A类型的对象a和一个B类型的对象b。输出结果是什么?
代码运行后的输出结果是:
3 4
1 2
3
Java程序由4个类组成:A、B、Main和Object。在这里,我们有两个类:A和B。A类具有两个构造函数,一个没有参数,另一个具有两个参数x和y。B类继承A类,并添加了一个额外的成员变量z。B类也有两个构造函数,一个没有参数,另一个具有三个参数x、y和z。
在main函数中创建了一个A类型的对象a和一个B类型的对象b。从a.print()调用中输出了数值3和数值4,这是在A构造函数中初始化x和y值得到的。从b.print()调用中输出了数值1、数值2和数值3,这是在B构造函数中初始化x、y和z值得到的,同时调用了超类的A.print()方法。
要注意的一点是B类的构造函数使用了super关键字来调用超类的构造函数。这是必需的,因为A类的x和y成员变量是私有属性,因此我们需要调用超类的构造函数来初始化它们。此外,在B类中,实例变量z必须通过调用B类的构造函数来初始化。
因此,该代码段的输出是3 4 1 2 3。