java 如何调用父类的父类

写代码的时候遇到一个问题

想输出的结果:

结果是这样:

子类调用父类的代码用super.方法名

那么子类的子类调用祖父类的方法怎么调用呢

代码如下:

祖父类为 People类 父类为 ChinaPeople类 子类为 BeijingPeople类

祖父类

package taskJuly.day21.task2;

/**
 * @ClassName People
 * @Description TODO
 * @Author Prt
 * @Date 2022/7/21 14:38
 */
public class People {
    String region;
    String hello;
    double height;
    double weight;

    public void speakHello(){
        System.out.println(this.region+" "+this.hello);
    }

    public void averageHeight(){
        System.out.println(this.region+" averageHeight = "+this.height);
    }

    public void averageWeight(){
        System.out.println(this.region+" averageWeight = "+this.weight);
        System.out.println("\r");
    }
}

 父类

package taskJuly.day21.task2;

/**
 * @ClassName ChinaPeople
 * @Description TODO
 * @Author Prt
 * @Date 2022/7/21 14:46
 */
public class ChinaPeople extends People{

    public ChinaPeople() {
       region = "ChinaPeople";
    }

    public void chinaMartial(){
        System.out.println(region+" 太极 very good");
    }


    @Override
    public void speakHello() {
        hello = "说 你好";
        super.speakHello();
    }

    @Override
    public void averageHeight() {
        height = 1.7;
        super.averageHeight();
    }

    @Override
    public void averageWeight() {
        weight = 70.0;
        super.averageWeight();
    }


    public void getFatherHeight(){//此处多写一个方法用到祖父类的方法
        super.averageHeight();    //此处没有Height的数值
    }

    public void getFatherWeight(){//此处多写一个方法用到祖父类的方法
        super.averageWeight();    //此处没有weight的数值
}

 子类

package taskJuly.day21.task2;

/**
 * @ClassName BeijingPeople
 * @Description TODO
 * @Author Prt
 * @Date 2022/7/21 14:52
 */
public class BeijingPeople extends ChinaPeople {

    public BeijingPeople() {
        region = "BeijingPeople";
    }

    public void beijingOpera() {
        System.out.println(region + " very good");
    }

    @Override
    public void speakHello() {

        super.speakHello();
    }

    @Override
    public void averageHeight() {
        height = 1.75;
        super.getFatherHeight();//super.的是父类getFatherHeight而不是averageHeight
    }

    @Override
    public void averageWeight() {
        weight = 73.0;
        super.getFatherWeight();//super.的是父类getFatherWeight而不是averageWeight
    }
}

 测试类

package taskJuly.day21.task2;

/**
 * @ClassName Test
 * @Description TODO
 * @Author Prt
 * @Date 2022/7/21 15:05
 */
public class Test {
    public static void main(String[] args) {
        ChinaPeople chinaPeople = new ChinaPeople();
        chinaPeople.speakHello();
        chinaPeople.chinaMartial();
        chinaPeople.averageHeight();
        chinaPeople.averageWeight();

        AmericanPeople americanPeople = new AmericanPeople();
        americanPeople.speakHello();
        americanPeople.americanBoxing();
        americanPeople.averageHeight();
        americanPeople.averageWeight();

        BeijingPeople beijingPeople = new BeijingPeople();
        beijingPeople.speakHello();
        beijingPeople.beijingOpera();
        beijingPeople.averageHeight();
        beijingPeople.averageWeight();
    }
}

运行结果: 

 

结论:

在父类中多写一个get方法获取到祖父类的方法即可

拓展:

如果是还有更多子类,继续递归写get方法

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值