• 多态


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

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

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

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

    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类型的数据

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

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

  • 相关阅读:
    HTML DOM教程 9HTML DOM Window 对象
    HTML DOM教程 11HTML DOM Screen 对象
    Android项目中把bin文件夹里面的.apk文件删除,怎么让它再生成
    Qt把ping www.baidu.com之后的内容的内容输出到一个名为output的文档
    Qt之QProcess 和 c语言对比
    Git的Windows版本Msysgit的中文乱码解决
    多系统 grub之ubuntu的 grub
    QT中调用外部程序:QProcess的使用
    repo的小结
    恢复Ubuntu默认的面板
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1941536.html
Copyright © 2020-2023  润新知