我的术语可能有问题,但是有人可以解释为什么我们需要在课程中包装 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
类的构造函数,以及重新声明这样的变量吗?
刚开始这样对我来说有点陌生。
我的Bear课程的一部分,如果它是相关的:
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
感谢
答案 0 :(得分:4)
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!");
}
}
答案 1 :(得分:1)
首先,您编写的所有内容都是Java中的一个类。它不是计算机的普遍规律,甚至不是OO,它只是语言的设计方式。
其次,main()
不是特殊方法,它只是从命令行执行Java程序时调用的第一个方法。
对于包含少量类而不处理命令行参数的简单程序,您可以将main()
方法放在几乎任何有意义的类中。 (在您的示例中,Bear
类也同样出色。)
但对于较大的程序,最好有一个专用的主类,除了处理命令行参数,显示使用信息和CLA错误,并创建另一个类的一个实例(应用程序的真正入口点)之外什么也不做。开始吧。
因此,尽管在您的示例中MakeBear
确实毫无意义,您可以将main()
方法移动到Bear
,但在更大的应用程序中它不会。
答案 2 :(得分:0)
这就是面向对象概念的用武之地 - 一切都是一个对象,它是一个类的实例。 Java程序中的所有内容都必须在一个类中。 JVM使用静态main方法启动应用程序的主线程。 这取决于你想对这些变量做什么。在您的代码中,您可以直接打印变量,而无需将它们分配给变量,如
System.out.println("The bear is called" + myBear.getName() +
" and is " + myBear.getAge() + " years old!");
理想情况下,您应该将您的Bear和MakeBear类组合为MakeBear,因为您的示例没有做任何事情。