为什么我要将main()放在专用的类中?

时间:2015-10-26 14:49:16

标签: java oop

我没有任何Java经验并且有C背景。

我想创建一个新的数据类型,比如抽象数据类型。在C中,这将通过为新数据类型创建结构来完成;据我所知,在Java中,您为该新数据类型创建了一个类,然后继续为该类创建对象。

我已经写了两种不同的方式,它们似乎都有效。但我不明白第二种方式的缺点。

  1. 在这里,我为数据类型创建一个类,创建它的一个实例,然后执行操作。我发现这是互联网教程中使用的设计。

    public class DesignOne {
        public static void main(String[] args) {
            MyDataType obj = new MyDataType(3,4);
            System.out.println(obj.sum());
        }
    }
    
    class MyDataType {
        int i;
        int j;
    
        MyDataType(int i, int j) {
            this.i = i;
            this.j = j;
        }
    
        int sum() {
            return this.i + this.j;
        }
    }
    
  2. 在这里,我在同一个类中创建了一个类的实例,我有我的驱动函数。像sum这样的操作也被定义为类的成员。基本上,只有一个班级。

    public class DesignTwo {
        int i;
        int j;
    
        DesignTwo(int i, int j) {
            this.i = i;
            this.j = j;
        }
    
        int sum() {
            return this.i + this.j;
        }
    
        public static void main(String[] args) {
            DesignTwo obj = new DesignTwo(3,4);
            System.out.println("sum == "+obj.sum());
        }
    }
    
  3. DesignTwo有哪些缺点,为什么DesignOne更受欢迎?

2 个答案:

答案 0 :(得分:10)

两者之间没有固有的区别(尽管通常不鼓励非最终的公共领域)。唯一的区别在于你放置main方法,它在概念上不属于任何特定的类。在较大的程序中,它通常只存在于一个单独的启动器类中,因为将它与某个任意类绑定是没有意义的,但这与数据建模几乎无关。

答案 1 :(得分:10)

它基本归结为Abstraction。你应该尝试给每个班级一个角色。在这里,您需要填写两个角色:

  1. 加载对象并显示
  2. 代表对象
  3. 因此你应该使用两个类。一旦您开始想要在程序中使用和显示多种类型的东西,优势就会变得更加明显。