zoukankan      html  css  js  c++  java
  • 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

       

          

  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/dedema/p/10776405.html
Copyright © 2011-2022 走看看