如果代码是编译的,那么单独使用构造函数的类是否会创建该类?

时间:2016-10-07 21:38:51

标签: java oop

如果这是一个糟糕的问题我很抱歉,我只是想知道为什么以下代码(以及此代码)会创建一个Wilderness对象?这个问题是在最近的一次考试中,我说错0是错误的(原因主要是因为我没有看到任何说new Wilderness等的行。

package exam1;

public class Wilderness {
    public Wilderness() { // constructor
        Region jungle;
        jungle = new Region();
        Cheetah speedy;
        speedy = new Cheetah();
        Jaguar sleek;
        sleek = new Jaguar();
        jungle.addCheetah(new Cheetah());
        sleek = new Jaguar();
        jungle.addCheetah(speedy);
        jungle.addJaguar(sleek);
    }
}

如果我编译此代码并运行它,是否创建了任何对象?特别是Wilderness个对象。我想可能要编写一个像这样的外部类:

package exam1;

public class Driver {
    public static void main(String[] args) {
        exam1.Wilderness w = new Wilderness(); // creates object
    }
}

为什么我会弄错了?

2 个答案:

答案 0 :(得分:4)

  

我只是想知道为什么下面的代码(只有这个代码)会创建一个Wilderness对象?

如果是" Wilderness对象"你的意思是" Wilderness类的实例,"然后不,它不会。

  

如果我编译此代码并运行它,是否创建了任何对象?

你不能"运行"那些代码没有A)你没有展示的东西,或者B)main中的Wilderness方法(这只是(A)的一个具体例子)。我们无法回答(A)的问题。对于(B),答案是:没有创建Wilderness实例,没有;表示Wilderness类的对象是,是。

答案 1 :(得分:-1)

创建了1个荒野的对象,即w。

在驱动程序类中,您正在创建一个对象。

创造了2个Cheeta对象,即一个是快速的,另一个是jungle.addcheeta(new cheeta())中的新cheeta();

创建了1个区域对象

创造了1只美洲虎。