java多态的三种形式例子(Java多态的例子)

编译时多态:方法重载

方法重载是一种编译时多态的形式,它指的是在一个类中定义了多个同名的方法,但它们的参数列表不同。在使用这些方法时,编译器会根据调用的参数类型和数量来选择合适的方法,并将方法调用转换为对应的方法名和参数列表。例如:

public class Calculator {
  public int add(int a, int b) {
    return a + b;
  }

  public double add(double a, double b) {
    return a + b;
  }
}

public class Main {
  public static void main(String[] args) {
    Calculator calculator = new Calculator();
    System.out.println(calculator.add(1, 2)); // 调用add(int, int)方法
    System.out.println(calculator.add(1.0, 2.0)); // 调用add(double, double)方法
  }
}

在上面的例子中,Calculator类定义了两个同名的add方法,但它们的参数类型不同。当使用这些方法时,编译器会根据参数类型来选择合适的方法。

运行时多态:方法重写

方法重写是一种运行时多态的形式,它指的是当子类重新定义了父类的方法时,对该方法的调用会被转换为子类的方法。在方法调用时,虚拟机会根据实际对象的类型来选择对应的方法。例如:

public class Animal {
  public void speak() {
    System.out.println("I am an animal!");
  }
}

public class Dog extends Animal {
  public void speak() {
    System.out.println("I am a dog!");
  }
}

public class Main {
  public static void main(String[] args) {
    Animal animal = new Dog();
    animal.speak(); // 调用Dog类中的speak()方法
  }
}

在上面的例子中,Animal类定义了speak方法,而Dog类重新定义了该方法。当我们创建一个Dog对象并将它赋值给一个Animal类型的变量时,对speak方法的调用会被转换为Dog类中的speak方法,而不是Animal类中的speak方法。

强制类型转换:类型转换

类型转换是一种强制多态的形式,它指的是将一个对象从一个类转换为另一个类。在进行类型转换时,需要使用强制类型转换运算符进行转换。例如:

public class Animal {
  public void eat() {
    System.out.println("I am eating!");
  }
}

public class Dog extends Animal {
  public void bark() {
    System.out.println("I am barking!");
  }
}

public class Main {
  public static void main(String[] args) {
    Animal animal = new Dog();
    animal.eat(); // 调用Animal类中的eat()方法
    ((Dog) animal).bark(); // 将Animal类型的对象转换为Dog类型,调用Dog类中的bark()方法
  }
}

在上面的例子中,我们创建了一个Dog对象并将其赋值给一个Animal类型的变量。当调用eat方法时,虚拟机会根据实际对象的类型来选择Animal类中的eat方法。而当我们将Animal类型的对象强制转换成Dog类型后,调用bark方法时,虚拟机会选择Dog类中的bark方法。

java多态的三种形式例子(Java多态的例子)

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/java4sjava.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月24日 下午10:10
下一篇 2023年4月24日 下午10:10

猜你喜欢