2010-11-22 104 views
2

有人能告诉我什么是申报这样一类的需要:参数传递

public class Test { 

String k; 
public Test(String a, String b, String c){ 
    k = a + " " + b + " " + c; //do something 

} 

public void run(){ 
    System.out.println(k); 
} 

public static void main(String[] args) { 
    String l = args[0]; 
    String m = args[1]; 
    String n = args[2]; 
    Test obj = new Test(l,m,n); 
    obj.run(); 
} 

} 

当然它的工作原理,但我不明白的地步,为什么会一个使用这种实现某种方式的方式。是否因为我们需要将参数直接传递给类主方法,这就是我们为什么使用这种方式或者存在其他原因?

public Test(...)使用相同类名的目的是什么。这是为什么?

+2

这根本不会编译`Test obj = new file(l,m,n);` – 2010-11-22 15:49:53

+1

没有意义。 `测试obj =新文件(l,m,n);` - 甚至不编译。 – dacwe 2010-11-22 15:50:27

+0

正确的缩进? ; p`Test obj = new file(l,m,n);`应该是`Test obj = new Test(l,m,n);` – 2010-11-22 15:50:41

回答

5

public Test(...)constructor并且其目的是为对象创建。这显然是从样本代码看出...

Test obj = new Test(l,m,n); 

可变obj通过被分配给该Test的构造实例化对象Test。在java中,每个构造函数必须具有确切它写入的Java文件(在您的情况构造函数Test在Test.java中找到)相同的名称(和大小写)。

...为什么会这样呢?

这一切都取决于你想用你的对象做什么。你可以有一个零参数的构造函数(即不需要参数),并有方法来设置你的lmn,就像这样:

package net; 


public class Test { 

    private String k; 

    /** 
    * 
    */ 
    public Test() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    public void set(String a, String b, String c) { 
     k = a + " " + b + " " + c; //do something 
    } 

    public void run() { 
     System.out.println(k); 
    } 

    public static void main(String[] args) { 
     String l = args[0]; 
     String m = args[1]; 
     String n = args[2]; 
     Test obj = new Test(); 
     obj.set(l, m, n); 
     obj.run(); 
    } 
} 

正如你所看到的,这是完全一样的功能,为您的例子,但使用零参数构造函数。

如果你的类根本没有构造函数,java会自动为你添加一个公共的零参数构造函数。

希望这会有所帮助。

3

称为Test的方法是Test类的所谓的constructor。构造函数是当您编写类似new Test(...)时被调用的方法。

请记住main方法是一个static方法,这意味着它不需要调用类Test的一个实例。 run方法不是这种情况。 run是一个实例方法,为了调用它,你需要一个Test类的实例(在你的情况下为obj)。

0

main方法是程序的入口点,当您从命令行运行java Test时会调用该方法。

public Test(String a, String b, String c)对于Testpublic constructor,当你调用new Test(l,m,n);注意,在构造函数中a和主要方法l指同一String ...这也适用于bm被调用; cn

作为一个侧面说明,该类希望通过命令行传递三个值,然后将它们存储在lm,并n

最后一点:如果你有一个签名public void run()的方法,您的班级应该可能会使用implementRunnable,以便它可以在Thread中使用。

1

公共Test(...)位是该类的构造函数。它始终与班级名称相同。类和主要方法是编程的两个完全不同的方面。类定义具有状态和方法的可重用组件。主要方法是从命令行调用的特殊方法。

你的例子太微不足道了,它并没有真正显示面向对象编程的好处。如果你考虑一个例子,你有不同的类的intetracting你可能会有更多的感觉。

0

学习Java。

构造函数是一个被调用来创建一个对象的函数,它由与该类名称相同的函数表示,但没有返回类型。多个构造函数可以用不同的参数声明。

在这种情况下,参数从参数数组中取出并作为参数传递给构造函数Test

这些是Java编程语言的基本概念。你应该阅读Java。试试Thinking in Java,这是一本很棒的书。