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

tub*_*bby 10 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;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  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());
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

DesignTwo有哪些缺点,为什么DesignOne更受青睐?

chr*_*ke- 10

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


Joe*_*ubb 10

它基本上归结为抽象.你应该尝试给每个班级一个角色.在这里,您需要填充两个角色:

  1. 加载对象并显示它
  2. 代表一个对象

因此,您应该使用两个类.一旦您开始想要在程序中使用和显示多种类型的东西,优势就会变得更加明显.

  • 此外,如果要长期保留数据,将MyDataType保留为仅数据对象在将来具有优势.(另见https://en.wikipedia.org/wiki/Separation_of_concerns) (2认同)