培训首页  >  软件开发新闻  >  Java多态性的例子

Java多态性的例子

[2022-06-28 20:45:28] 浏览量:21 来源:

北大青鸟长沙麓谷校区

  多态性是OOP的功能之一,它允许我们以不同的方式执行单个操作。例如,假设我们有一个Animal有方法的类sound()。因为这是一个通用类,所以我们不能给它一个实现,比如:Roar、Meow、Oink 等。我们必须给出一个通用的消息。

  public class Animal{ ...

  public void sound(){

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

  }

  }

  现在假设我们是 Animal 类的两个子类:Horse它Cat扩展了Animal类。我们可以像这样为相同的方法提供实现:

  public class Horse extends Animal { ... @Override public void sound (){ System . 出来。println ( "邻居" ); } }

  和

  public class Cat extends Animal{

  ...

  @Override

  public void sound(){

  System.out.println("Meow");

  }

  }

  正如你所看到的,虽然我们对所有子类都有共同的行动,sound()但有不同的方式来做同样的行动。这是多态性的完美示例(允许我们以不同方式执行单个操作的功能)。只调用通用 sound() 方法是没有任何意义的,因为每个 Animal 都有不同的声音。因此我们可以说这个方法执行的动作是基于对象的类型。

  示例 1:Java 中的多态性

  运行时多态示例:

  Animal.java

  public class Animal{

  public void sound(){

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

  }

  }

  Horse.java

  class Horse extends Animal{

  @Override

  public void sound(){

  System.out.println("Neigh");

  }

  public static void main(String args[]){

  Animal obj = new Horse();

  obj.sound();

  }

  }

  输出:

  Neigh

  Cat.java

  public class Cat extends Animal{

  @Override

  public void sound(){

  System.out.println("Meow");

  }

  public static void main(String args[]){

  Animal obj = new Cat();

  obj.sound();

  }

  }

  输出:

  Meow

  示例 2:编译时多态性

  另一方面,方法重载是一个编译时多态性示例。

  class Overload

  {

  void demo (int a)

  {

  System.out.println ("a: " + a);

  }

  void demo (int a, int b)

  {

  System.out.println ("a and b: " + a + "," + b);

  }

  double demo(double a) {

  System.out.println("double a: " + a);

  return a*a;

  }

  }

  class MethodOverloading

  {

  public static void main (String args [])

  {

  Overload Obj = new Overload();

  double result;

  Obj .demo(10);

  Obj .demo(10, 20);

  result = Obj .demo(5.5);

  System.out.println("O/P : " + result);

  }

  }

  这里方法demo()重载了 3 次:第一个方法有 1 个 int 参数,第二个方法有 2 个 int 参数,第三个方法有 double 参数。调用哪个方法取决于我们在调用方法时传递的参数。这发生在运行编译时,因此这种类型的多态性称为编译时多态性。


文中图片素材来源网络,如有侵权请联系删除
  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

网上报名

热门信息

温馨提示