2022/2/6 自己对多态的新理解



当调用实例方法(对象方法)的时候 ,可能会存在多态,它会在程序运行过程中 动态地 看指向的是哪个对象,到时候再找对象对应类型的方法,如果没有,才回去找父类的实例方法。

而静态方法和成员变量,都是只看类型(类名)是啥 ,就去哪里找 静态方法和成员变量

右边 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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容