• 【Day18】多态(理解与应用)


    1、多态概述

            多态是Java面向对象继封装、继承后的最后一个特征。

    2、理解:

            例如:学生,通过学生类确定确定是哪一个学生,就是通过父类,找到其对应的子类。

            注意:多态的前提是有关系(子父类),没有关系找不到,且必须重写父类的方法

    3、格式:

            类名 对象名=new 子类名();
            通过父类对象指向子类方法、属性。称(向上转型)

            子类名 对象名 = (子类名)父类对象;
            通过子类对象,指向父类方法、属性,因为我们不知道它们是否有关系,所以我们引出instanceof关键字,判断是否能进行转型。称(向下转型(强转))

    4、instanceof:

            主要用于向下转型,返回类型为布尔类型

    5、多态特点:

            编译看作,运行看右。

    举例:通过一个小的继承,可以看出,如果不继承,在编译的时候就会报错

    public class PolymorphismTest {
        public static void main(String[] args) {
    //        向上转型
    //        ----------------------------------------------------------------
    //        这就是多态,左边是父类,右边是子类创建一个对象

            

    Polymorphism1 pp=new Polymorphism2();


            
    //        编译时看左边,pp是父类对象,.show():是子类重写父类的方法
    //        通过父类的对象,指向子类的重写方法
            pp.show();
    //        ----------------------------------------------------------------
            
            
    //        向下转型,
    //        ----------------------------------------------------------------
    //        强转,跟int数据类型转byte数据类型的格式相似
    //        int num1=100;
    //        byte num2=(int)num1;
    //        Polymorphism3 pp2 = (Polymorphism3)pp;        //报错,因为,Polymorphism3不是Polymorphism1的子类
          

    1.  Polymorphism2 pp2 = (Polymorphism2)pp;
    2.         pp2.show();


    //        简单我们可以直接看的出来,但是很多时候我们是不确定的,这时候就要引入instanceof关键字了
            
    //        **********************************************
    //        instanceof返回值是布尔类型的数据
          

    1.  if(pp instanceof Polymorphism2){
    2. //            如果为真就强转
    3.             Polymorphism2 pp3 = (Polymorphism2)pp;
    4.             pp3.show();
    5.         }

    //        ----------------------------------------------------------------
            
        }
    }

    class Polymorphism1{
        public void show(){
            System.out.println("我是父类");
        }
    }


    class Polymorphism2 extends Polymorphism1{
        
    //    重写父类里的方法
        public void show(){
            System.out.println("我是子类(1)的方法");
        }
    }


    class Polymorphism3{
    //    重写父类里的方法
        public void show(){
            System.out.println("我是子类(2)的方法");
        }
    }

     

  • 相关阅读:
    Web应用开发介绍
    C++ Reference: Standard C++ Library reference: Containers: deque: deque: rbegin
    Sass/Scss、Less 是什么?
    Python —— 深拷贝&浅拷贝
    Java 世界的法外狂徒:反射
    113.Impala ODBC驱动的安装及配置
    OpenAI怎么写作「谷歌小发猫写作」
    【JVM GC核心参数】JVM原理,JAVA 各种垃圾回收器的核心参数,JAVA GC回收器参数配置,核心参数说明
    Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs
    多商户商城系统功能拆解23讲-平台端分销等级
  • 原文地址:https://blog.csdn.net/fool_Java/article/details/126179017