跳到主要内容

简述Java 中实现多态的机制 ?

参考答案:

Java 中的多态(Polymorphism)是面向对象编程的三大特性之一, 其他两个是封装(Encapsulation)和继承(Inheritance)。多态允许我们定义一个接口, 使用不同的实现方式来执行。

在 Java 中,多态主要通过以下方式实现:

  1. 方法重写(Method Overriding):当子类继承父类并重写父类中的方法时,如果通过父类引用指向子类对象并调用该方法,就会执行子类中的方法,这就是多态的体现。这是多态最常见的实现方式。
class Parent {
    void show() {
        System.out.println("Parent's show()");
    }
}

class Child extends Parent {
    @Override
    void show() {
        System.out.println("Child's show()");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.show();  // 输出 Child's show(),这就是多态的体现
    }
}
  1. 方法重载(Method Overloading):虽然方法重载不被认为是严格的多态,但它也体现了多态的思想。方法重载是指在同一个类中,可以定义多个名称相同但参数列表不同的方法。在调用时,JVM 会根据参数列表的不同选择相应的方法执行。
  2. 接口与实现(Interface and Implementation):在 Java 中,接口可以被多个类实现。当接口引用指向不同的实现类对象并调用接口中的方法时,就会执行相应实现类中的方法,这也是多态的体现。
interface MyInterface {
    void doSomething();
}

class MyClass1 implements MyInterface {
    @Override
    public void doSomething() {
        System.out.println("MyClass1's doSomething()");
    }
}

class MyClass2 implements MyInterface {
    @Override
    public void doSomething() {
        System.out.println("MyClass2's doSomething()");
    }
}

public class Test {
    public static void main(String[] args) {
        MyInterface mi = new MyClass1();
        mi.doSomething();  // 输出 MyClass1's doSomething()

        mi = new MyClass2();
        mi.doSomething();  // 输出 MyClass2's doSomething()
    }
}

以上就是在 Java 中实现多态的主要机制。需要注意的是,多态的存在依赖于继承、接口和实现等特性,同时还需要方法的重写或重载来实现具体的多态效果。