如何访问C类父母父母的年龄段?

时间:2017-07-05 01:36:13

标签: java inheritance extends

我教一些学生 我如何访问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);
    }
}

2 个答案:

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