多态

不羁的心 提交于 2019-12-05 04:49:31

多态的前提:
A:要有继承关系。
B:要有方法重写。
其实没有也是可以的,但是如果没有这个就没有意义。
动物 d = new 猫();//读的时候从右往左读(也可以这样理解猫是new出来的对象,
而左边是一个类。所以就相当于判断一个对象是不是这个类的实例)猫是猫,猫是动物。
d.show();
动物 d = new 狗();
d.show();
C:要有父类引用指向子类对象。
父 f = new 子();

用代码体现一下多态。

多态中的成员访问特点:
A:成员变量
编译看左边,运行看左边。
B:构造方法
创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
C:成员方法
编译看左边,运行看右边。
D:静态方法
编译看左边,运行看左边。
(静态和类相关,算不上重写,所以,访问还是左边的)

由于成员方法存在方法重写,所以它运行看右边。

 

class Fu {
    int num =5;
    static void method4() {
        System.out.println("fu method_4");
    }
    void method3() {
        System.out.println("fu method_3");
    }
}
class Zi extends Fu {
    int num =8;
    static void method4() {
        System.out.println("zi method_4");
    }
    void method3() {
        System.out.println("zi method_3");
    }
}
class DuoTaiDemo4 {
    public static void main(String[] args) {
        Fu f = new Zi();
        System.out.println(f.num);//与父类一致
        f.method4();//与父类一致
        f.method3();//编译时与父类一致,运行时与子类一致
        Ziz = new Zi();
        System.out.println(z.num);
        z.method4();
        z.method3();
    }
}

输出结果:
        5
        fu method_4
        zi method_3
        8
        zi method_4
        zi method_3

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!