这个Java类声明正确吗?
我想用子类这个Java类声明正确吗?,java,inner-classes,Java,Inner Classes,我想用子类DataClass1(使用自己的子类Item)和DataClass2(使用自己的子类Item1)构建Data主类 dataClass2List也是如此 所有子类都必须是公共的 有没有更好的方法来声明和填写我的类数据 谢谢 p、 数据类及其子类只包含变量而不包含方法 一些建议: 您应该使用getter和setter来访问不同的字段。 由于数据类是公共的,它们是否需要是内部类? 要解决这个问题,您需要将不同的公共类移动到不同的文件中 所有内部清单都可以做成“最终清单”。 一些建
DataClass1
(使用自己的子类Item
)和DataClass2
(使用自己的子类Item1
)构建Data
主类
dataClass2List也是如此
所有子类都必须是公共的
有没有更好的方法来声明和填写我的类数据
谢谢
p、 数据类及其子类只包含变量而不包含方法 一些建议:
- 您应该使用getter和setter来访问不同的字段。
- 由于数据类是公共的,它们是否需要是内部类?
要解决这个问题,您需要将不同的公共类移动到不同的文件中
- 所有内部清单都可以做成“最终清单”。
一些建议:
- 您应该使用getter和setter来访问不同的字段。
- 由于数据类是公共的,它们是否需要是内部类?
要解决这个问题,您需要将不同的公共类移动到不同的文件中
- 所有内部清单都可以做成“最终清单”。
你似乎混淆了一些概念
代码中没有子类DataClass1
和DataClass2
属于Data
,Item
是DataClass1
的内部类,Item1
是DataClass2
的内部类
它们没有明显的内部类的必要性,在确定需要内部类之前,最好避免使用内部类,很可能直到您对Java有了更好的了解
如果将这些类作为内部类,您建议使用它们将不起作用,因为它们是非静态的内部类,只能在外部类的实例的上下文中创建
按照类定义的原样,您发布的用法的翻译大约是
Data data = new Data();
DataClass1 dc1 = data.new DataClass1();
Item itm = dc1.new Item();
itm.n1="1";
itm.n2="2";
itm.n3="3";
dc1.itemList.add(itm);
data.dataClass1List.add(dc1);
但这真的很糟糕(它可能包含错误——我已经费心去编译了)。让类只包含字段而不包含方法,并以这种方式添加数据根本不是一种非常面向对象的方法
正如WirthLuce在一篇评论中指出的那样,您应该更改名称以表示域中的某些内容,并创建方法使其执行适当的操作,而不仅仅是保存从外部操纵的数据。您似乎混淆了一些概念
代码中没有子类DataClass1
和DataClass2
属于Data
,Item
是DataClass1
的内部类,Item1
是DataClass2
的内部类
它们没有明显的内部类的必要性,在确定需要内部类之前,最好避免使用内部类,很可能直到您对Java有了更好的了解
如果将这些类作为内部类,您建议使用它们将不起作用,因为它们是非静态的内部类,只能在外部类的实例的上下文中创建
按照类定义的原样,您发布的用法的翻译大约是
Data data = new Data();
DataClass1 dc1 = data.new DataClass1();
Item itm = dc1.new Item();
itm.n1="1";
itm.n2="2";
itm.n3="3";
dc1.itemList.add(itm);
data.dataClass1List.add(dc1);
但这真的很糟糕(它可能包含错误——我已经费心去编译了)。让类只包含字段而不包含方法,并以这种方式添加数据根本不是一种非常面向对象的方法
正如WirthLuce在一篇评论中指出的那样,您应该更改名称以表示域中的某些内容,并创建方法使其能够执行适当的操作,而不仅仅是保存从外部操纵的数据。这确实不是一种非常面向对象的方法。正确方向的(第一步)是更改类的名称以反映类所代表的内容(与泛型单词“data”相反),然后在此基础上实现方法。@WirthLuce I仅更改此问题的名称这确实不是一种非常面向对象的方法。正确方向的(第一步)是更改类的名称以反映类所代表的内容(与泛型单词“data”相反),然后在此基础上实现方法。@WirthLuce我只为这个问题更改名称
public class SomeClass {
private String name;
[...]
public void setName(String name) {this.name = name;}
public String getName() {return name;}
[...]
}
public final List<Item> itemList = new ArrayList<Item>();
public class Item {
public Item(String n1,String n2,String n3) {
this.n1 = n1;
this.n2 = n2;
this.n3 = n3;
}
[...]
}
Data data = new Data();
DataClass1 dc1 = data.new DataClass1();
Item itm = dc1.new Item();
itm.n1="1";
itm.n2="2";
itm.n3="3";
dc1.itemList.add(itm);
data.dataClass1List.add(dc1);