首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java“冗余”包装类?

java“冗余”包装类?
EN

Stack Overflow用户
提问于 2011-03-15 22:50:28
回答 3查看 222关注 0票数 1

我的术语可能弄错了,但是有人能解释一下为什么我们需要在类中包装main method吗?对我来说,这似乎是多余的。然后再用一个main扩展这个类好吗?

代码语言:javascript
运行
复制
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类的构造函数,以及重新声明类似的变量--是可以接受的吗?

刚开始对我来说有点陌生。

我的熊课的一部分,如果是相关的话:

代码语言:javascript
运行
复制
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

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-15 23:01:55

main必须在一个类中,因为Java中的所有东西都是一个类。

在您的简单示例中,主函数通常位于Bear中。MakeBear类是不必要的。

它会被改写成这样。

代码语言:javascript
运行
复制
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!");
    }
}
票数 4
EN

Stack Overflow用户

发布于 2011-03-15 23:03:11

首先,您编写的所有东西都是Java中的一个类。这不是一个通用的计算法则,甚至不是OO,它只是语言设计的方式。

其次,main()不是一个特殊的方法,它只是在您从命令行执行一个Java程序时调用的第一个方法。

对于简单的程序,包含几个类,而不处理命令行参数,您可以将main()方法放置在大致合理的任何类中。(在您的示例中,Bear类同样优秀。)

但是对于较大的程序来说,最好是有一个专用的主类,它只处理命令行参数,显示使用信息和CLA错误,并创建另一个类的实例(应用程序的实际入口点)并启动它。

因此,虽然在您的示例中,MakeBear实际上是没有意义的,您可以将main()方法移动到Bear中,但是在一个更大的应用程序中它就不是了。

票数 1
EN

Stack Overflow用户

发布于 2011-03-15 23:13:51

这就是面向对象的概念出现的地方--所有东西都是一个对象,它是一个类的实例。Java程序中的所有内容都必须在类中。JVM使用静态main方法启动应用程序的主线程。这取决于你想对这些变量做些什么。在代码中,您可以直接打印变量,而不必将它们赋值给如下所示的变量

代码语言:javascript
运行
复制
System.out.println("The bear is called" + myBear.getName() +
                          " and is " + myBear.getAge() + " years old!");

理想情况下,您应该结合您的类,因为按照您的示例,MakeBear不会做任何事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5319020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档