zoukankan      html  css  js  c++  java
  • Java多态

     

     

     

    在Java中有两种类型的多态性:编译时多态性和运行时多态性。

    编译时多态性就是指函数的重载而已,实现方法是根据函数的名字不同来调用。

    运行时多态性或动态方法分派是一个过程,它对重写方法的调用在运行时体现而不是编译时(因为方法调用是由JVM不是编译器决定的,所以它被称为运行时多态性)。

    在此过程中,通过超类的引用变量调用重写的方法。 要调用的方法基于引用的对象。

     

     
     1 class Super{
     2     void run() {
     3         System.out.println("SuperClass  running");
     4     }
     5 }
     6 
     7 class Child extends Super{
     8     void run() {
     9         System.out.println("Child  running");
    10     }
    11 
    12     public static void main(String args[]) {
    13         Super s = new Child ();// upcasting - 向上转换
    14         s.run();
    15     }
    16 }

    执行上面代码得到以下结果 :

    Child  running
     1 class Animal {
     2     void eat() {
     3         System.out.println("eating...");
     4     }
     5 }
     6 
     7 class Dog extends Animal {
     8     void eat() {
     9         System.out.println("eating bread...");
    10     }
    11 }
    12 
    13 class Cat extends Animal {
    14     void eat() {
    15         System.out.println("eating rat...");
    16     }
    17 }
    18 
    19 class Lion extends Animal {
    20     void eat() {
    21         System.out.println("eating meat...");
    22     }
    23 }
    24 
    25 class TestPolymorphism {
    26     public static void main(String[] args) {
    27         Animal a;
    28         a = new Dog();
    29         a.eat();
    30         a = new Cat();
    31         a.eat();
    32         a = new Lion();
    33         a.eat();
    34     }
    35 }

     执行上面代码得到以下结果 :

    eating bread...
    eating rat...
    eating meat...

     

    上面示例中,都是有关方法被覆盖而不是数据成员,因此运行时多态性不能由数据成员实现。

    如果重写数据成员,类似的代码只会输出超类数据成员。
    多级继承中,覆盖方法也可以实现多态。


  • 相关阅读:
    【原】AMFObject数据格式详解
    STL总结 (C++)
    git相关项目迁移
    OBS_Classic经典版框架
    windows线程同步的几种方式
    面试题之strcpy / strlen / strcat / strcmp的实现
    python实用技巧
    Python Flask学习笔记之数据库
    Python Flask学习笔记之Web表单
    必应每日壁纸批量下载
  • 原文地址:https://www.cnblogs.com/steve-jiang/p/6790173.html
Copyright © 2011-2022 走看看