簡體   English   中英

在抽象類及其子類場景中具有相同的屬性名稱

[英]Having same property name in abstract class and its child class scenario

我有一個Abstract類:

public abstract class ClassParent{
    protected Integer id;
    protected String message;
}

及其子類:

public class ClassChild extends ClassParent{
    private Integer id;
    private String message;
}

在這種情況下會發生什么? 它會繼承其基類屬性還是會在運行時出錯? 這些屬性的getter和setter應該在哪里?

子類屬性隱藏父類屬性。 這稱為陰影,在Java中是允許的。 最好避免它。 您可以使用以下代碼示例進行驗證

public class ClassChild extends ClassParent {
    private Integer id;
    private String message;

    ClassChild(Integer id, String message) {
        this.id = id;
        this.message = message;
    }

    @Override
    public String toString() {
        return "ClassChild{" +
                "id=" + id +
                ", message='" + message + '\'' +
                '}';
    }

    public static void main(String[] args) {
        ClassChild cs = new ClassChild(1, "Test");

        System.out.println(cs);
        System.out.println(cs.message);
        System.out.println(cs.id);
        System.out.println(((ClassParent)cs).id);
        System.out.println(((ClassParent)cs).message);

    }
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM