我有一个Abstract
课程:
public abstract class ClassParent{
protected Integer id;
protected String message;
}
及其子类:
public class ClassChild extends ClassParent{
private Integer id;
private String message;
}
在这种情况下会发生什么?是继承其基类属性还是会在运行时出错?应该是这些属性的getter和setter在哪里?
答案 0 :(得分:0)
子类属性隐藏父类属性。这称为阴影并允许在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);
}
}