-1

我遇到了这段代码,上面写着

new Class_Name();    // (i)

现在,通常我会看到分配给变量的新语句的结果:

Class_Name n = new Class_Name();

n引用创建的对象。调用 (i) 时真正发生了什么?为什么会有人想要这样做?它有什么用途?

代码

class Tree {
  int height;
  Tree() {
    print("Planting a seedling");
    height = 0;
  }

  Tree(int initialHeight) {
    height = initialHeight;
    print("Creating new Tree that is " +
    height + " feet tall");
  }

  void info() {
    print("Tree is " + height + " feet tall");
  }
  void info(String s) {
    print(s + ": Tree is " + height + " feet tall");
  }
}
enter code here
public class Overloading {
public static void main(String[] args) {
  for(int i = 0; i < 5; i++) {
  Tree t = new Tree(i);
  t.info();
  t.info("overloaded method");
  }
// Overloaded constructor:
new Tree();
}
}
4

4 回答 4

4

调用 (i) 时真正发生的情况

下面的代码行创建了一个类型的对象,Class_Name由于它没有被任何引用变量引用,它立即死亡。

new Class_Name();

这样,您可以创建该类的对象,并在其上调用方法,而无需将其分配给引用。当您在代码中只需要该对象一次并且不想不必要地保留对它的引用时,您将这样做。匿名对象被创建并立即死亡。这又快又脏:

new Class_Name().someMethod();

在 I/O 流和 AWT 中,我们在程序中只使用了许多对象;对他们来说,最好使用匿名对象,如下所示。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

编辑后:

new Tree();

您的意图是在构造函数中执行代码。但是您的代码不会编译我相信您需要将最后一行放在某个方法中。

于 2013-07-09T07:42:21.733 回答
2
new Class_Name(); 

该语句将创建对象Class_Name并调用构造函数,但您没有持有该类的引用,因此您不能调用任何其他方法。在这里,这个 Object 范围将被限制在它写入的地方,比如在方法或块中。

它的一般用途。new Thread(new RunnableTest()).start();

class RunnableTest implements Runnable{
    public void run(){
       for(int i=0;i<10;i++){
          System.out.println("i : "+i);
       }
    }
}
于 2013-07-09T07:43:29.787 回答
0

当你想使用 oop 时,你必须创建很多具有很多属性的类

有时您需要在特定类中使用某个类的属性,因此您需要

通过使用创建这些类的对象

new Class_Name();
于 2013-07-09T07:51:13.937 回答
0

new class_name()将创建的对象。由于class_name您没有存储它的引用,因此在此语句之后您将无法在代码中使用相同的对象。但是如果您想稍后在代码中使用它,最好存储对象的引用。这也将帮助您减少管理多个对象和内存的工作量。

于 2013-07-09T07:56:06.643 回答