Java Class 和子类中的属性
Java Atribute In Class and Subclass
我有 class Mappa 和一个子class MappaFermi 和一个属性 mappaName(从枚举中选择)。
我正在尝试使用构造函数 MappaFermi() 编写测试,但我似乎无法正确编写它。
public class Mappa {
private Name mappaName;
public Mappa (Name mappaName){
this.mappaName=mappaName;
...
}
}
public class MappaFermi extends Mappa {
public MappaFermi(Name mappaName) {
super(mappaName);
}
}
public enum Name {
FERMI, GALILEI, GALVANI
}
eclipse给出的所有建议我都试过了,还是报错
public class MappaFermiTest {
@Test
public void testMappaFermi() {
Mappa mappa = new MappaFermi(Name.FERMI);
assertNotNull(mappa);
}
@Test
public void testMappaFermi() {
Mappa mappa = new MappaFermi();
assertNotNull(mappa);
}
}
如果你想使用new MappaFermi()
,你必须定义一个无参数的构造函数。这是 default 构造函数,任何没有其他构造函数的 class 都将隐式具有无参数构造函数。但是一旦你定义了带参数的构造函数,比如 Mappa(Name mappaName)
,无参数的默认构造函数就不再可用,必须显式定义。
public MappaFermi() {
super(null); // or whatever is a good 'default' name
}
此外,在 Mappa mappa = new MappaFermi(whatever);
之后立即测试 assertNotNull(mappa);
是毫无意义的,因为 不可能 此时可能 null
.
这里有几个错误:
-三个同名方法testMappaFermi
.
测试可以在一个方法中完成,或者如果你真的想要三个方法,你可以重命名方法。
-第二个测试没有写对。什么会起作用:
Name mappaName = Name.FERMI;
Mappa mappa = new MappaFermi(mappaName);
-第三个测试使用 new MappaFermi()
没有定义无参数构造函数。
要么你想在构造函数中放置一个参数,要么像这样编写一个无参数构造函数:
public MappaFermi() {
super(Name.FERMI);
}
我有 class Mappa 和一个子class MappaFermi 和一个属性 mappaName(从枚举中选择)。
我正在尝试使用构造函数 MappaFermi() 编写测试,但我似乎无法正确编写它。
public class Mappa {
private Name mappaName;
public Mappa (Name mappaName){
this.mappaName=mappaName;
...
}
}
public class MappaFermi extends Mappa {
public MappaFermi(Name mappaName) {
super(mappaName);
}
}
public enum Name {
FERMI, GALILEI, GALVANI
}
eclipse给出的所有建议我都试过了,还是报错
public class MappaFermiTest {
@Test
public void testMappaFermi() {
Mappa mappa = new MappaFermi(Name.FERMI);
assertNotNull(mappa);
}
@Test
public void testMappaFermi() {
Mappa mappa = new MappaFermi();
assertNotNull(mappa);
}
}
如果你想使用new MappaFermi()
,你必须定义一个无参数的构造函数。这是 default 构造函数,任何没有其他构造函数的 class 都将隐式具有无参数构造函数。但是一旦你定义了带参数的构造函数,比如 Mappa(Name mappaName)
,无参数的默认构造函数就不再可用,必须显式定义。
public MappaFermi() {
super(null); // or whatever is a good 'default' name
}
此外,在 Mappa mappa = new MappaFermi(whatever);
之后立即测试 assertNotNull(mappa);
是毫无意义的,因为 不可能 此时可能 null
.
这里有几个错误:
-三个同名方法testMappaFermi
.
测试可以在一个方法中完成,或者如果你真的想要三个方法,你可以重命名方法。
-第二个测试没有写对。什么会起作用:
Name mappaName = Name.FERMI;
Mappa mappa = new MappaFermi(mappaName);
-第三个测试使用 new MappaFermi()
没有定义无参数构造函数。
要么你想在构造函数中放置一个参数,要么像这样编写一个无参数构造函数:
public MappaFermi() {
super(Name.FERMI);
}