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);
}
}
走了十公里
我是一个人
你父类的show方法是private,私有的
你如果想用自己的方法,那你要继承父类的意义何在,
你也可以用抽象类,这样继承还可以重写方法
你的子类的show方法与父类的show方法访问控制等级不一样,不属于重写,所以是调用父类的show方法