写代码的时候遇到一个问题
想输出的结果:
结果是这样:
子类调用父类的代码用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方法