• 【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)的方法");
        }
    }

     

  • 相关阅读:
    本地开发环境和服务器传输数据的几种方法
    软考高项-项目管理概述-1
    WPF知识小结(2)
    vmware fusion12共享文件夹到虚拟机window10
    二叉树理论基础篇
    记一次线上问题,拿到的不是最新的数据 → 偶尔的热情真的难顶呀!
    [Mysql] 删除数据
    【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(八)
    Python中的单元测试框架:使用unittest进行有效测试
    vue路由&nodejs环境搭建
  • 原文地址:https://blog.csdn.net/fool_Java/article/details/126179017