• java多态


    在这里弄了很久,查了不少资料。现在终于有了头绪,还是通过具体例子比较容易明白。

    通俗得讲,应该是这么说的,根据调用对象的不同方法的具体执行内容不同,这才是多态。

    在csdn上有这样的一个例子:

    首先我们有这样几个类,电脑,个人电脑,笔记本电脑。

    java 代码
    1. class Computer{   
    2.        
    3.     public void turnOn(){   
    4.     }   
    5. }  

    现在有了电脑这个类,那么个人PC,笔记本都是继承他。

    java 代码
    1. class PC extends Computer{   
    2.     public void turnOn(){   
    3.         System.out.println("PC has turn on");   
    4.     }   
    5. }   
    6.   
    7. class NB extends Computer{   
    8.     public void turnOn(){   
    9.         System.out.println("NB has turn on");   
    10.     }   
    11. }  

    我们看到,每个类都有一个 turnOn()方法,而在父类中这个方法是空的,子类中各自有不同的实现,到这里可能还不太明显。如果有另外一个方法,要接受这些类作为参数,就像这样

    java 代码
    1. class Test{   
    2.     public void go(Computer computer){   
    3.          computer.turnOn();   
    4.     }   
    5. }  

    这个方法接收的是基类参数,当然我们是可以把子类传递给方法的,也应该这么做。

    java 代码
    1. go(new PC());   
    2. go(new NB());  

    这样他就会去调用具体子类的turnOn()方法,所以这两次调用的输出是不一样的.如果不用基类作为参数,我们想调用每个子类的turnOn()方法,那么就要些两个方法体一样的go()而接收不同的参数的重载。

    java 代码
    1. public void go(PC computer){      
    2.          computer.turnOn();      
    3.     }     
    4.   
    5. public void go(NB computer){      
    6.          computer.turnOn();      
    7.     }    

    这样些也是正确的,但是这样会产生很多重复代码,而且也不易维护,当然这只是多态中最基本的一个部分

    除非注明转载,其他文章均为作者原创,可以自由转载,但请注明转载的本文的地址,请尊重作者的劳动成果。
  • 相关阅读:
    Visual C#使用DirectX实现视频播放
    windows WMIC命令大全
    WMI 无法监视时必须要尝试的手段 winmgmt /resyncperf
    DirectX技术实现视频会议中的音频通信
    c++引用
    c++模板详解
    四元数
    static_cast 和 dynamic_cast
    C++堆和栈详解(转)
    设计模式六大设计原则
  • 原文地址:https://www.cnblogs.com/juepei/p/3213473.html
Copyright © 2020-2023  润新知