多态、多态的特点、类型转换(Java)

一、多态介绍

多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态。

对象多态就比如水果可以是苹果也可以是西瓜。

多态、多态的特点、类型转换(Java)_第1张图片

行为多态如何分辨呢,编译的时候会看People类中是否有run方法,运行的时候看Teacher中或者Student中的run方法。

多态的前提:有继承/实现关系;存在父类引用子类对象;存在方法重写。

多态注意事项:多态是对象、行为的多态,Java中的属性(成员变量)不谈多态。

使用多态的好处:在多态形式下,右边对象是解耦合的,更便于拓展和维护。并且定义方法时,使用父类类型的形参,可以接收一切子类对象,拓展性更强。

public class Test {
    public static void main(String[] args) {
        //多态的好处
        //1.对象多态:一个对象可以有多个类,如果一个对象是某个类,那么它可以是其他类
        People p1 = new Teacher();
        p1.run(); //好处1:实现解耦合,右边对象可以随时切换,后续业务随机应变

        //好处2:可以使用父类类型的变量作为形参,可以接受一切子类对象
        Student s1 = new Student();
        Teacher t1 = new Teacher();
        test(s1);
        test(t1);

    }  public static void test(People p) {

    }
}

二、类型转换

自动类型转换:父类  变量名 = new  子类();

强制类型转换:子类  变量名 = (子类) 父类变量

多态下的问题:无法直接调用子类的独有功能,而使用强制类型转换就可以解决问题:

多态、多态的特点、类型转换(Java)_第2张图片

多态、多态的特点、类型转换(Java)_第3张图片

强制类型转换的注意事项:存在继承/实现关系就可以在编译阶段进行强制类型转换,编译阶段不会报错。运行时,如果发现对象的真实类型和强制转换后的类型不同,就会报类型转换异常错误。

强制转换前可以使用instanceof关键字,判断当前对象的真实类型,再进行转换。

你可能感兴趣的:(java,开发语言)