面向对象之——多态(Polymorphism)小结

多态的概念

面向对象三大特征:封装、继承、多态

extends继承或者implements实现,是多态性的前提

子类继承父类或者实现接口类,那么这个对象既有自己的特征又有父类或者接口类的特征,叫做多态

代码中体现多态性,就是父类引用指向子类对象
格式:
父类名称 对象名 = new 子类对象(); 左父右子
接口实现
接口名称 对象名 = new 实现类对象();

package com.qy.day10.Demo01;
//父类 Phone
public class Phone {
    public void call(){
        System.out.println("打电话");
    }
}


package com.qy.day10.Demo01;
//子类 MiPhone
public class MiPhone extends Phone {
    @Override
    public void  call(){
        System.out.println("打电话给雷军");
    }

}


package com.qy.day10.Demo01;
//主函数
public class Demo01PhoneMain {
    public static void main(String[] args) {
        Phone  phone = new MiPhone();
        phone.call();

    }

}

面向对象之——多态(Polymorphism)小结_第1张图片
等号左边是谁就以谁为主

多态中成员变量的访问特特点

  1. 成员变量不能进行覆盖重写,这点与继承不一样

  2. new出来的对象,“=” 等号左边是那个对象,那么接下来就使用哪个对象的成员变量

  3. 只有方法才能进行覆盖重写,成员变量不能进行覆盖重写

package com.qy.day10.Demo01;
//父类 Phone
public class Phone {
    public void call() {
        System.out.println("打电话");
    }

    int num = 10;

}

package com.qy.day10.Demo01;
//子类 MiPhone
public class MiPhone extends Phone {
    @Override
    public void call() {
        System.out.println("打电话给雷军");
    }

    int num = 20;
}

package com.qy.day10.Demo01;
//主函数
public class Demo01PhoneMain {
    public static void main(String[] args) {
        Phone  phone = new MiPhone();
        phone.call();

        System.out.println(phone.num);
    }

}

面向对象之——多态(Polymorphism)小结_第2张图片
输出的num是父类Phone中的num:10

多态中成员方法的访问特特点

方法能进行覆盖重写,那么就会以以子类对象为优先对象

编译看左边,运行看右边

成员方法访问规则:

看new出来的是谁,就优先调用谁,没有就向上找

总结:成员变量就是编译看左边,运行还看左边
​成员方法是编译看左边,运行看右边

package com.qy.day10.Demo01;
//父类
public class Phone {
    public void call() {
        System.out.println("打电话");
    }

    int num = 10;

    public void method(){
        System.out.println("父类方法");
    }

}

package com.qy.day10.Demo01;
//子类
public class MiPhone extends Phone {
    @Override
    public void call() {
        System.out.println("打电话给雷军");
    }

    int num = 20;

    public void method(){
        System.out.println("子类方法");
    }
}

package com.qy.day10.Demo01;
//主函数
public class Demo01PhoneMain {
    public static void main(String[] args) {
        Phone  phone = new MiPhone();
        phone.call();

        System.out.println(phone.num);

        phone.method();
    }

}

面向对象之——多态(Polymorphism)小结_第3张图片

使用多态的好处

面向对象之——多态(Polymorphism)小结_第4张图片

你可能感兴趣的:(java)