我教一些学生 我如何访问A类的属性年龄?
class A {
protected int age;
public A(int age){
this.age = age+2;
}
}
class B extends A{
protected int age;
public B(int age){
super(age);
this.age = age+1;
}
}
class C extends B{
protected int age;
public C(int age){
super(age);
this.age = age;
}
public void showInfo(){
// System.out.println(A.this.age);
System.out.println(super.age);
System.out.println(this.age);
}
}
答案 0 :(得分:0)
它违反了面向对象设计的原则,在Java中是不可能的。有一些丑陋的解决方法,但如果你正在教学生,那么最好不要引入这个想法,或者至少解释为什么它没有意义。
如果你真的需要一种方法,这个问题几乎是重复的:Why is super.super.method(); not allowed in Java?
答案 1 :(得分:0)
使用以下代码,您可以实现。
class A{
protected int age;
public A(int age){
this.age = age+2;
}
public void showInfo()
{
System.out.println("A : " + this.age);
}
}
class B extends A{
protected int age;
public B(int age){
super(age);
this.age = age+1;
}
public void showInfo()
{
super.showInfo();
System.out.println("B : " + this.age);
}
}
class C extends B{
protected int age;
public C(int age)
{
super(age);
this.age = age;
}
public void showInfo()
{
super.showInfo();
System.out.println("C : " + this.age);
}
}