返回
北大青鸟长沙麓谷校区
置顶
该校与厚学网暂未合作,平台不保证课程的真实有效性,如有侵权等争议,请及时与厚学网联系处理

Java多态性的例子

22 2022-06-29 09:25:37

学习笔记

  多态性是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 参数。调用哪个方法取决于我们在调用方法时传递的参数。这发生在运行编译时,因此这种类型的多态性称为编译时多态性。


文中图片素材来源网络,如有侵权请联系删除
来源:北大青鸟长沙麓谷校区
热门课程 全部课程

热门动态

申请免费试听

只要一个电话

我们为您免费回电

立即申请
刷新
图形验证
关闭
>>
拖动左边滑块完成上方拼图