全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)常見(jiàn)問(wèn)題正文

Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?

更新時(shí)間:2023-05-11 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Java中,多態(tài)的機(jī)制是通過(guò)繼承和方法重寫(xiě)來(lái)實(shí)現(xiàn)的。具體來(lái)說(shuō),當(dāng)一個(gè)子類(lèi)繼承自一個(gè)父類(lèi)并重寫(xiě)了父類(lèi)的方法時(shí),當(dāng)使用父類(lèi)類(lèi)型的變量來(lái)調(diào)用這個(gè)方法時(shí),實(shí)際上會(huì)調(diào)用子類(lèi)中重寫(xiě)后的方法。這種行為被稱(chēng)為動(dòng)態(tài)方法分派,是實(shí)現(xiàn)多態(tài)的核心機(jī)制之一。

  以下是一個(gè)簡(jiǎn)單的Java代碼演示多態(tài)的例子:

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");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("The cat meows");
    }
}

public class PolymorphismExample {
    public static void main(String[] args) {
        Animal animal1 = new Animal();
        Animal animal2 = new Dog();
        Animal animal3 = new Cat();
        
        animal1.makeSound();
        animal2.makeSound();
        animal3.makeSound();
    }
}

  在這個(gè)例子中,Animal是父類(lèi),而Dog和Cat是繼承自Animal的子類(lèi)。在子類(lèi)中,我們重寫(xiě)了makeSound方法,并提供了不同的實(shí)現(xiàn)。

  在main方法中,我們創(chuàng)建了三個(gè)Animal類(lèi)型的對(duì)象,并分別用它們來(lái)調(diào)用makeSound方法。其中,animal1是Animal類(lèi)型的對(duì)象,所以調(diào)用makeSound方法時(shí)會(huì)執(zhí)行Animal類(lèi)中的makeSound方法。animal2和animal3都是Animal類(lèi)型的變量,但是它們所引用的對(duì)象是Dog和Cat類(lèi)型的對(duì)象,因此調(diào)用makeSound方法時(shí)會(huì)執(zhí)行這些子類(lèi)中重寫(xiě)后的makeSound方法。這就是多態(tài)的體現(xiàn)。

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!