• 多态的使用意义


    1.多态(Polymorphism):就是父类型的引用能够指向子类型的对象。

    2.Parent p = new Child ();当使用多态调用方法时。首先检查父类有没有该方法,若有,则运行该方法;若没有,则编译错误。

    3.一共同拥有两种类型的强制类型转换:

    a) 向上类型转换(upcast):

    比方说将Cat类型转换为Animal类型,即子类型转换为父类型。对于向上类型转换。不须要显式使用强制类型转换。

    1.Cat  cat  = new Cat ();
    2.Animal animal = cat;
    第二行代码为向上类型转换。

    b)向下类型转换

    比方将Animal类型转换为Cat类型,即将父类型转换为子类型。对于向下类型转换,必需要显式使用强制类型转换。

    1.Animal a = new Cat();
    2.Cat cat = (Cat) a;
    第二行代码将Animal类型强制转换为Cat型。为向下类型转换。

    为什么要使用多态?


    public class PolyTest2
    {
        public void run(BMW bmw)                  
        {
            bmw.run();
        }
    
        public void run(QQ qq)
        {
            qq.run();
        }
    
        public static void main (String[] args)
        {
            PolyTest2 test = new PolyTest2();
            QQ qq = new QQ ();
            test.run (qq);
            BMW bmw = new BMW();
            test.run (bmw);
        }
    }
    
    class Car
    {
        public void run()
        {
            System.out.println ("car is runing");
        }
    }
    
    class BMW extends Car
    {
        public void run ()
        {
            System.out.println ("BMW is runing");
        }
    }
    
    class QQ extends Car
    {
        public void run ()
        {
            System.out.println ("QQ is runing");
        }
    }
     
    以上代码是不使用多态的情况,PolyTest2这个类中的run方法既要处理BWM类中的run方法,又要处理QQ类中的run方法,不使用多态的话就要针对不同的对象逐一定义方法。

    若一个类有非常多非常多子类,那么代码量是非常庞大的。因此。这时候多态就非常实用了。



    public class PolyTest2
    {
     /* 
        public void run(BMW bmw)
        {
            bmw.run();
        }
    
        public void run(QQ qq)
        {
            qq.run();
        }
            */
    <strong>
        public void run (<span style="color:#FF0000;">Car car</span>)
        {
            car.run();    
        }</strong>
    
        public static void main (String[] args)
        {
            PolyTest2 test = new PolyTest2();
            Car car = new QQ ();                               //Polymorphism
            test.run (car);
            
            BMW bmw = new BMW();
            test.run (bmw);                                   //use upcast
        }
    }
    
    class Car
    {
        public void run()
        {
            System.out.println ("car is runing");
        }
    }
    
    class BMW extends Car
    {
        public void run ()
        {
            System.out.println ("BMW is runing");
        }
    }
    
    class QQ extends Car
    {
        public void run ()
        {
            System.out.println ("QQ is runing");
        }
    }

    以上是使用多态的代码。在子类繁多的情况下就大实用处了。代码尽管简单,认真体会当中的妙处,对写高质量的代码应该会有帮助!



  • 相关阅读:
    SSL证书安装指引
    SSL证书绑定成功
    我是如何将网站全站启用Https的?记录博客安装配置SSL证书全过程
    _INT_SIZEOF 规格严格
    Java: Multidimensional array vs. Onedimensional 规格严格
    Fix JDK TImer 规格严格
    Ecpilse debug视图 规格严格
    PE 分析 规格严格
    VC Unicode 规格严格
    Object Pool 规格严格
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7263619.html
Copyright © 2020-2023  润新知