📌  相关文章
📜  教资会网络 | UGC NET CS 2018 年 12 月 – II |问题 47(1)

📅  最后修改于: 2023-12-03 15:10:15.935000             🧑  作者: Mango

UGC NET CS 2018年12月 - II | 问题47

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。