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);
}