问题遇到的现象和发生背景
s对象去调用继承的walk方法,为什么walk方法里的方法是父类的show方法,而不是子类新定义的show方法。
问题相关代码,请勿粘贴截图
父类
package sgg;
public class Person {
String name;
int age;
public Person() {
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}
public void walk(int distance) {
System.out.println("走了"+distance+"公里");
show();
}
public void eat() {
System.out.println("人吃饭");
}
private void show() {
System.out.println("我是一个人");
}
}
子类
package sgg;
public class Student extends Person {
String major;
public Student() {
}
public Student(String major) {
this.major=major;
}
public void eat() {
System.out.println("学生应该吃有营养的食物");
}
public void study() {
System.out.println("学生应该好好学习");
}
public void show() {
System.out.println("我是一个学生");
}
}
测试类
package sgg;
public class test_example {
public static void main(String[] args) {
Student s=new Student();
s.walk(10);
}
}
运行结果及报错内容
走了十公里
我是一个人