• 多态


    方法的重载和方法的覆写实际上就是多态性的一种体现;真正的多态性还包含一种称为对象多态性的概念。

    主要是:子类和父类对象相互转换关系。

    向上转型:子类对象自动转换成父类对象        父类  父类对象=子类实例

    向下转型:父类对象需要强制转换成子类对象    子类  子类对象=(子类)父类实例

    class A{

           public void fun1(){

                  System.out.println("1A --> public void fun1(){}") ;

           }

           public void fun2(){

                  this.fun1() ;

           }

    };

    class B extends A{

           public void fun1(){ // 将方法覆写了

                  System.out.println("2B --> public void fun1(){}") ;

           }

           public void fun3(){ // 此操作为子类自己定义的,父类中不存在

                  System.out.println("3B --> public void fun3(){}") ;

           }

    };

    public class PolDemo01{

           public static void main(String args[]){

                  A a = new B() ;      // 发生向上转型关系,子类实例 --> 父类实例

                  a.fun2() ;

           }

    };

    如果要调用fun3()方法,那么要就行向下转型

    class A{

           public void fun1(){

                  System.out.println("1A --> public void fun1(){}") ;

           }

           public void fun2(){

                  this.fun1() ;

           }

    };

    class B extends A{

           public void fun1(){ // 将方法覆写了

                  System.out.println("2B --> public void fun1(){}") ;

           }

           public void fun3(){ // 此操作为子类自己定义的,父类中不存在

                  System.out.println("3B --> public void fun3(){}") ;

           }

    };

    public class PolDemo02{

           public static void main(String args[]){

                  A a = new B() ;      // 发生向上转型关系,子类实例 --> 父类实例

                  B b = (B)a ;    // 发生向下转型关系,强制

                  b.fun3() ;

                  b.fun2() ;

           }

    };

    有如下代码

    A a=new A();

    B b=(B)a;

    此时ab转型不成功,因为ab之间并没有任何关系。

    如果想判断对象时哪个类的实例,则使用instanceof关键字

    对象  instanceof    ->此方法返回boolean类型的数据

    为了保证对象的向下转型操作正确,在操作前最好判断此对象是否是类的实例。

    首先将子类转换成父类,然后判断对象是否是类的实例,最后将父类强制类型转换成子类。

  • 相关阅读:
    使用C#替换Word文档里的文字和图片
    《程序员的思维修炼—开发认知潜能的九堂课》—从新手到专家的历程
    从已有数据库表生成Insert语句的小工具
    我的2010
    Sqlite批量插入速度慢的解决方法小计
    分享一个winForm下的Chart控件
    分享一个任务提醒小工具
    SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图
    Winform中选取指定文件夹并获取其下所有文件
    Vue中JS遍历后台JAVA返回的Map数据,构造对象数组数据格式
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1941536.html
Copyright © 2020-2023  润新知