21xrx.com
2024-11-22 01:43:54 Friday
登录
文章检索 我的文章 写文章
Java中多态性的实现方式是什么?
2023-07-11 17:22:15 深夜i     --     --
Java 多态性 实现方式

Java是一种面向对象编程语言,它支持多态性的特性,多态性的实现方式有两种:静态多态和动态多态。

静态多态是指使用方法重载实现的多态性,方法重载是指在同一个类中定义多个方法,它们具有相同的名称但是参数列表不同。当调用这些方法时,Java会根据输入参数的类型决定调用哪一个方法。例如,下面是一个简单的例子:


public class Animal {

  public void makeSound(){

    System.out.println("Animal is making a sound");

  }

}

public class Cat extends Animal{

  @Override

  public void makeSound(){

    System.out.println("Cat is meowing");

  }

}

public class Dog extends Animal{

  @Override

  public void makeSound(){

    System.out.println("Dog is barking");

  }

}

public class Main{

  public static void main(String[] args){

    Animal animal1 = new Cat();

    Animal animal2 = new Dog();

    animal1.makeSound();

    animal2.makeSound();

  }

}

在上面的例子中,Animal是一个父类,Cat和Dog是子类,它们都继承了Animal类的makeSound()方法,但是实现方式不同。在main函数中,我们创建了一个Cat对象和一个Dog对象,并将它们赋值给Animal类型的变量,这就是静态多态的实现方式,通过这种方式,我们调用了Cat和Dog类的makeSound()方法,虽然他们的方法名相同,但是具体的实现却不同。

动态多态是指使用方法重写实现的多态性,方法重写(也叫覆盖)是指在子类中重新定义父类已经定义的方法,子类中的方法必须和父类中的方法有相同的名称、参数列表和返回类型。在运行时,Java会判断对象的类型,并调用该类型对应的方法。例如:


public class Animal {

  public void makeSound(){

    System.out.println("Animal is making a sound");

  }

}

public class Cat extends Animal{

  @Override

  public void makeSound(){

    System.out.println("Cat is meowing");

  }

}

public class Dog extends Animal{

  @Override

  public void makeSound(){

    System.out.println("Dog is barking");

  }

}

public class Main{

  public static void main(String[] args){

    Animal animal1 = new Animal();

    Animal animal2 = new Cat();

    Animal animal3 = new Dog();

    animal1.makeSound();

    animal2.makeSound();

    animal3.makeSound();

  }

}

在上面的例子中,我们创建了三个Animal类型的对象,其中一个是Animal类型,一个是Cat类型,一个是Dog类型。我们在Cat和Dog类中重写了makeSound()方法,并将Cat和Dog对象分别赋值给Animal类型的变量。因为Cat和Dog类中都实现了makeSound()方法,所以Java会根据实际对象的类型来选择哪一个方法在运行时执行。因此,当我们调用animal2.makeSound()时,输出的是“Cat is meowing”;当我们调用animal3.makeSound()时,输出的是“Dog is barking”。

综上所述,Java中的多态性有静态多态和动态多态两种实现方式,通过这两种方式,我们可以更好地重用代码,增加程序的可扩展性和可维护性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复