gpt4 book ai didi

java - 运行时多态性

转载 作者:行者123 更新时间:2023-11-30 02:47:50 25 4
gpt4 key购买 nike

class A {
public void display(){
System.out.println("From Class A");
}
}

class B extends A {
public void display() {
System.out.println("From Class B");
}
}

public class Test {
public static void main(Strings[] args){

A a = new A();
A b = new B()
a.display();
b.display();
}
}

输出:

From Class A    
From Class B

现在,我得到了预期的输出。但我想知道为什么我要使用 A b = new B(),而我可以通过使用来实现同样的事情B b = new B()
使用以前的技术有什么好处,何时何地对我有益?

最佳答案

让我们举个例子。我们都知道鸟类会飞,但也有一些异常(exception)。我们从他们的行为中得知,所以让我们对此进行建模。

一般来说,鸟类会飞,所以:

class Bird {
void fly() {
System.out.println("I can fly");
}
}

class Eagle extends Bird {
void fly() {
System.out.println("I can fly very high");
}
}

我们都知道鸭子不会飞,但我们并不是对所有鸟类都这么说。我们在运行时说特定的鸟是否可以飞,具体取决于鸟。

class Duck extends Bird {
void fly() {
System.out.println("I can walk or swim only");
}
}

class FlightDemo {
public static void main(String[] args) {
Bird bird = new Bird();
bird.fly(); // output: I can fly

Bird eagle = new Eagle();
eagle.fly(); // output: I can fly very high

Bird duck = new Duck();
duck.fly(); // output: I can walk or swim only
}
}

您看到在运行时,鸭子不能飞。你可以覆盖它的飞行行为,它会行走或游泳。我们看到鸭子是一只鸟,它不能飞,所以我们重写了它的行为,但鸭子仍然是一只鸟,它可以行走或游泳。

关于java - 运行时多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39640055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com