我的术语可能弄错了,但是有人能解释一下为什么我们需要在类中包装main method
吗?对我来说,这似乎是多余的。然后再用一个main
扩展这个类好吗?
package bears;
import bears.Bear;
// what's the point of this Class here?
public class MakeBear {
public static void main(String[] args)
{
int age;
String name;
Bear MyBear = new Bear("Jim", "brown", 12, 50); // constructor
age = MyBear.getAge();
name = MyBear.getName();
System.out.println("The bear is called" + name +
" and is " + age + " years old!");
}
另外,上面的构造程序的方法--即在Bear
方法中调用main
类的构造函数,以及重新声明类似的变量--是可以接受的吗?
刚开始对我来说有点陌生。
我的熊课的一部分,如果是相关的话:
public class Bear {
private String name;
private String colour;
private int age;
private int weight;
public Bear(String bearName, String bearColour, int bearAge, int bearWeight)
{
name = bearName;
colour = bearColour;
age = bearAge;
weight = bearWeight;
}
// get/set methods
谢谢
发布于 2011-03-15 23:01:55
main必须在一个类中,因为Java中的所有东西都是一个类。
在您的简单示例中,主函数通常位于Bear中。MakeBear类是不必要的。
它会被改写成这样。
public class Bear {
private String name;
private String colour;
private int age;
private int weight;
public Bear(String bearName, String bearColour, int bearAge, int bearWeight)
{
name = bearName;
colour = bearColour;
age = bearAge;
weight = bearWeight;
}
public static void main(String[] args)
{
Bear myBear = new Bear("Jim", "brown", 12, 50); // constructor
System.out.println("The bear is called" + myBear.getName() +
" and is " + myBear.getAge() + " years old!");
}
}
发布于 2011-03-15 23:03:11
首先,您编写的所有东西都是Java中的一个类。这不是一个通用的计算法则,甚至不是OO,它只是语言设计的方式。
其次,main()
不是一个特殊的方法,它只是在您从命令行执行一个Java程序时调用的第一个方法。
对于简单的程序,包含几个类,而不处理命令行参数,您可以将main()
方法放置在大致合理的任何类中。(在您的示例中,Bear
类同样优秀。)
但是对于较大的程序来说,最好是有一个专用的主类,它只处理命令行参数,显示使用信息和CLA错误,并创建另一个类的实例(应用程序的实际入口点)并启动它。
因此,虽然在您的示例中,MakeBear
实际上是没有意义的,您可以将main()
方法移动到Bear
中,但是在一个更大的应用程序中它就不是了。
发布于 2011-03-15 23:13:51
这就是面向对象的概念出现的地方--所有东西都是一个对象,它是一个类的实例。Java程序中的所有内容都必须在类中。JVM使用静态main方法启动应用程序的主线程。这取决于你想对这些变量做些什么。在代码中,您可以直接打印变量,而不必将它们赋值给如下所示的变量
System.out.println("The bear is called" + myBear.getName() +
" and is " + myBear.getAge() + " years old!");
理想情况下,您应该结合您的类,因为按照您的示例,MakeBear不会做任何事情。
https://stackoverflow.com/questions/5319020
复制相似问题