• Java多态


    多态   

       意义:同一个事物,由于条件不同,执行的结果不同。在Java中实质上指的同一引用类型,使用不同的实例而执行结果不同的。

       注意:【1】同一个类型,一般指父类

          【2】不同:不同的子类实例,同一个方法执行的父类或者子类方法;

       实现多态规则:

          【1】必须有继承关系,子类有一定要重写/实现父类的方法

          【2】本质是  运行时   父类引用之类重写的方法    

       Super  s = new Sub()

        

       多态的实现形式

           【1】父类型引用子类对象(本质)

        //父类作为一引用类型 
        Super s = null;
        //父类引用子类sub1的重新方法
        s= new sub1();
        s.showInfo();   //输出子类sub1的方法
        //父类引用子类sub2的重新方法
        s=new sub2();   
        s.showInfo();   //输出子类sub2的方法
      

           【2】父类作为方法形参实现多态

      public void feed(Pet pet) {
               pet.getName()
        }

           【3】父类作为方法的返回值实现多态

      public Pet adoptPet(int type) {
              Pet pet = null;
              if(1 == type) {
                  pet = new Dog();
              }else if(2 == type) {
                  pet = new Penguin();
              }else if(3 == type){
                  pet = new Cat();
              }
              return pet;
          }

        类的转换

        说明:在多态中存在两种类型装换。  

            一:自动类型装换  ,  也称向上类型转换。子类可以自动转换成父类。

            二:强制类型转换  ,也称向下类型转换。父类可以强制转换成子类。

            三:必须是继承关系  。

        个人理解  : 上类型转换  格式 :  父类  引用  = new 子类

              其实该引用拥有子类的属性和方法(包括父类私有属性和方法) , 引用的上类型转换 规则只能使用成了父类的属性和方法和子类重写实例。

              强制类型转换 格式 :  子类    新的引用=   (子类)  引用 ;

              满足继承关系可以强制类型转换, 引用可以使用子类的属性和方法必须要强制类型装换。其实创建对象本质是子类,通过转换方法使用子类;

        判断对象的真实类型  

            关键字 : instanceof 

            instanceof 判断类型如下 类  或者 接口的实例

            返回结果 = object instanceof class
            参数:
            返回结果:布尔类型,ture   或者 是 false
            Object:必选项。任意对象表达式。
            Class:必选项。任意已定义的对象类。

            

            类的判断

            Sub   k = new  Sub();
            System.out.println(k   instanceof Sub); //true
            System.out.println(k   instanceof Super); //true
            System.out.println(k   instanceof Object); //true

              接口的实例的判断

         Sub   k = new  Sub();
            _Interface  interf= k;  //定义一个接口
            System.out.println(k   instanceof _Interface  ); //true
            System.out.println(k   instanceof interf); //true

       

          

  • 相关阅读:
    C语言第0次作业
    C博客作业01分支、顺序结构
    C博客第02次作业循环结构
    关于编写有效用例的12秘诀
    关于调用FTP中遇到的问题以及解决方案
    关于FtpWebRequest.Timeout属性的理解
    WPF中四种不同的测量单位
    关于检查Oracle表及列是否存在SQL语句
    ArcSDE configuration files
    C#判断不同版本的Excel
  • 原文地址:https://www.cnblogs.com/dedema/p/10776405.html
Copyright © 2020-2023  润新知