当调用实例方法(对象方法)的时候 ,可能会存在多态,它会在程序运行过程中 动态地 看指向的是哪个对象,到时候再找对象对应类型的方法,如果没有,才回去找父类的实例方法。
而静态方法和成员变量,都是只看类型(类名)是啥 ,就去哪里找 静态方法和成员变量
右边 new 指向的是 Son类, 所以真正执行的是执行的是son的实例方法。
但是 左边 调用的类 指向的是 Parent类 ,只能执行Parent类有的方法。 此图因为parent类没有play方法 ,所以会爆红。
public class Parent {
public int age = 55;
public void printf(){
System.out.println(age);
}
public void happy(){
System.out.println("happy");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void pri(){
System.out.println("parent");
}
}
public class Son extends Parent{
public int age = 19;
public void printf(){
System.out.println(age);
}
public void happy(){
System.out.println("unhappy");
}
public void play(){
System.out.println("play");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void pri(){
System.out.println("son");
}
}
public class Main {
public static void main(String[] args) {
Parent parent = new Son();
parent.printf();
parent.happy();
// parent.play();
//System.out.println(parent.getAge());
System.out.println("--------------");
System.out.println(parent.age);
Parent.pri();
Son son = new Son();
System.out.println(son.age);
//System.out.println(son.getAge());
Son.pri();
}
}
19
unhappy
--------------
55
parent
19
son