有人能告诉我声明这样一个类的需要是什么:
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();
}
}
当然它有效,但我不明白为什么会用这种方式来实现某些东西。是因为我们需要将参数直接传递给类main方法,这就是我们使用这种方式的原因还是有其他原因?
public Test(...)
使用相同类名的目的是什么。为什么会这样?
答案 0 :(得分:5)
public Test(...)
是constructor,其目的是创建对象。从示例代码中可以清楚地看到......
Test obj = new Test(l,m,n);
变量obj
通过分配给Test
的构造函数实例化为对象Test
。在java中,每个构造函数必须与其编写的java文件具有完全相同的名称(和大小写)(在您的情况下,构造函数Test
在Test中找到的.java)。
......为什么会这样?
这一切都取决于你想对你的对象做什么。您可以使用零参数构造函数(即不需要参数),并设置方法来设置l
,m
,n
,如下所示:
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会自动为你添加一个公共零参数构造函数。
希望这有帮助。
答案 1 :(得分:3)
名为Test
的方法是Test
类的所谓constructor。构造函数是在编写new Test(...)
之类的函数时调用的方法。
请记住main
方法是static
方法,这意味着它不需要调用类Test的实例。 run
方法不是这种情况。 run
是一个实例方法,要调用它,您需要一个Test
类的实例(在您的情况下为obj
)。
答案 2 :(得分:1)
公共Test(...)位是该类的构造函数。它始终与类同名。类和主要方法是编程的两个完全不同的方面。类定义具有状态和方法的可重用组件。 main方法是从命令行调用的特殊方法。
你的例子是如此微不足道,以至于它并没有真正展示面向对象编程的任何好处。如果你考虑一个你有不同类的交互的例子,你可能会对它有更多的感觉。
答案 3 :(得分:0)
main
方法是程序的入口点,在从命令行运行java Test
时会被调用。
public Test(String a, String b, String c)
是Test
课程的public
constructor,在您致电new Test(l,m,n);
时会被呼叫请注意构造函数中的a
和l
在main方法中引用相同的String
...这也适用于b
和m
; c
和n
。
作为旁注,此类希望从命令行传递三个值,然后将它们存储在l
,m
和n
最后一点说明:如果您的方法带有签名public void run()
,则您的课程可能会implement Runnable
,以便可以在Thread
中使用。< / p>
答案 4 :(得分:-1)
学习Java。
构造函数是一个被调用来创建一个对象的函数,它由一个与该类同名的函数表示,但没有返回类型。可以使用不同的参数声明多个构造函数。
在这种情况下,参数从参数数组中取出,并作为参数传递给Test
的构造函数。
这些是Java编程语言的基本概念。你应该阅读Java。试试Thinking in Java,这是一本很棒的入门书。