Java多态性是通过继承、接口和方法重写实现的。多态性允许我们使用一个共同的接口表示不同类型的对象,从而在运行时根据对象的实际类型调用相应的方法。这是通过编译器在运行时解析方法调用的实现的。
以下是Java多态性的实现方式:
class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 使用父类引用指向子类对象
myAnimal.makeSound(); // 输出 "The dog barks"
}
}
interface Flyable {
void fly();
}
class Bird implements Flyable {
@Override
public void fly() {
System.out.println("The bird is flying");
}
}
class Airplane implements Flyable {
@Override
public void fly() {
System.out.println("The airplane is flying");
}
}
public class Main {
public static void main(String[] args) {
Flyable myFlyable = new Bird(); // 使用接口引用指向实现类对象
myFlyable.fly(); // 输出 "The bird is flying"
myFlyable = new Airplane(); // 使用相同的接口引用指向另一个实现类对象
myFlyable.fly(); // 输出 "The airplane is flying"
}
}
class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 使用父类引用指向子类对象
myAnimal.makeSound(); // 输出 "The dog barks"
}
}
通过这些方式,Java多态性允许我们编写更加灵活和可扩展的代码。