我没有任何Java经验并且有C背景。
我想创建一个新的数据类型,比如抽象数据类型。在C中,这将通过为新数据类型创建结构来完成;据我所知,在Java中,您为该新数据类型创建了一个类,然后继续为该类创建对象。
我已经写了两种不同的方式,它们似乎都有效。但我不明白第二种方式的缺点。
在这里,我为数据类型创建一个类,创建它的一个实例,然后执行操作。我发现这是互联网教程中使用的设计。
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;
}
}
在这里,我在同一个类中创建了一个类的实例,我有我的驱动函数。像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());
}
}
DesignTwo有哪些缺点,为什么DesignOne更受欢迎?
答案 0 :(得分:10)
两者之间没有固有的区别(尽管通常不鼓励非最终的公共领域)。唯一的区别在于你放置main方法,它在概念上不属于任何特定的类。在较大的程序中,它通常只存在于一个单独的启动器类中,因为将它与某个任意类绑定是没有意义的,但这与数据建模几乎无关。
答案 1 :(得分:10)
它基本归结为Abstraction。你应该尝试给每个班级一个角色。在这里,您需要填写两个角色:
因此你应该使用两个类。一旦您开始想要在程序中使用和显示多种类型的东西,优势就会变得更加明显。