📜  门| GATE-CS-2009 |第 48 题(1)

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

题目描述

以下是一段Java代码的执行结果:

class superclass
{
    superclass()
    {
        System.out.println("I am superclass");
    }

}

public class subclass extends superclass
{
    subclass()
    {        
        System.out.println("I am subclass");
    }
    public static void main(String args[])
    {
        subclass x=new subclass();
    }

}

输出结果为:

I am superclass
I am subclass

请问,如果在 subclass 中不写任何构造函数,是否可以得到同样的输出结果?

解题思路

我们可以发现,在输出对应的提示语句之前,都有构造函数进行了一些操作。在Java中,甚至没有显式声明构造函数时,编译器也会自动生成一个默认的无参构造函数,其代码会自动插入到当前类中,所以即便没有显式声明构造函数,也能够保证代码的正确性。

因此,不写任何构造函数时,也一定能够得到同样的输出结果。

解题代码片段
```java
class superclass
{
    superclass()
    {
        System.out.println("I am superclass");
    }

}

public class subclass extends superclass
{
    // 如果在 subclass 中不写任何构造函数,也能够得到同样的输出结果,因为会自动根据需要生成默认的无参构造函数。
    public static void main(String args[])
    {
        subclass x=new subclass();
    }

}

输出结果为:

I am superclass
I am subclass