Java多态

我们先来回顾一下多态的定义:

多态是同一个行为具有多个不同表现形式或形态的能力。

这句话看上去很不好理解,接下来我将用一个例子来帮助大家清晰地去理解什么是多态。

比如我们现在有一个父类animal ,它衍生出来的子类有猫类 cat ,狗类dog,我们知道动物都会叫,但是猫的叫是“喵喵喵”,狗子的叫是“汪汪汪”,因此对于“叫”这种行为,猫和狗的表现形式有所不同,这就称为多态。再举一个例子,对于一个男人,一天中会扮演不同的角色,在家是父亲,在上班的地方是员工,在汽车里是司机,这是一个人在一天中的不同的表现形式,也可以称之为多态。

在Java中多态分为两种:

  • 编译期多态
  • 运行期多态

首先是编译期多态,也称为静态多态,在Java中可以通过方法重载实现。在这里简单介绍一下方法重载。所谓方法重载,就是指同一个函数,传入不同类型或不同数目的参数时执行的方法也不同。举两个例子:

例1:不同类型的参数

class MultiplyFun {
 
  // 两个int参数
  static int Multiply(int a, int b)
  {
    return a * b;
  }
 
  // 两个double参数
  static double Multiply(double a, double b)
  {
    return a * b;
  }
}
 
class Main{
  public static void main(String[] args)
  {
    System.out.println(MultiplyFun.Multiply(2, 4));
    System.out.println(MultiplyFun.Multiply(5.5, 6.3));
  }
}

输出

8
34.65

例2:不同数目的参数

class MultiplyFun{
     // 两个参数
    static int Multiply(int a, int b)
    {
      return a * b;
    }
     // 三个参数
    static int Multiply(int a, int b, int c)
    {
      return a * b * c;
    }
}
 class Main {
    public static void main(String[] args)
    {
      System.out.println(MultiplyFun.Multiply(2, 4));
      System.out.println(MultiplyFun.Multiply(2, 7, 3));
    }
}

输出:

8
42

第二个就是运行期多态,也称之为多态方法调度。在Java中可以通过方法重写实现。所谓方法重写就是指一个子类继承了父类后,会对父类中的一些函数进行修改,所以父类的方法就在子类中重写了。下面举一个例子。

class Parent {
    void Print()
    {
        System.out.println("parent class");
    }
}

class subclass1 extends Parent {
    void Print()
    {
        System.out.println("subclass1");
    }
}

class subclass2 extends Parent {
    void Print()
    {
        System.out.println("subclass2");
    }
}

class TestPolymorphism3 {
    public static void main(String[] args)
    {
        Parent a;
        a = new subclass1();
        a.Print();
        a = new subclass2();
        a.Print();
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容