溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java多態(tài)的案例分析

發(fā)布時(shí)間:2020-09-08 11:06:35 來源:億速云 閱讀:154 作者:小新 欄目:編程語(yǔ)言

java多態(tài)的案例分析?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

java多態(tài)簡(jiǎn)單例子:首先有一個(gè)Animal類,它有Cat,和Dog兩個(gè)子類;然后在Animal中有個(gè)say方法,當(dāng)Cat調(diào)用這個(gè)方法的時(shí)候輸出的是“小貓喵喵喵”,當(dāng)Dog調(diào)用這個(gè)方法時(shí),輸出的是“小狗汪汪汪”。

多態(tài):

多態(tài)指同一個(gè)實(shí)體同時(shí)具有多種形式。它是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的一個(gè)重要特征。如果一個(gè)語(yǔ)言只支持類而不支持多態(tài),只能說明它是基于對(duì)象的,而不是面向?qū)ο蟮摹?/p>

多態(tài)是出現(xiàn)在具有繼承關(guān)系的兩個(gè)類的對(duì)象之間,所以它不像方法重載(發(fā)生在一個(gè)類中)在編譯期間發(fā)生(也就是確定下來),而是在運(yùn)行期間發(fā)生(確定下來)。

一個(gè)父類類型的引用可以指向他任何一個(gè)子類的對(duì)象

[相同]類域的[不同]對(duì)象執(zhí)行[同一]方法的時(shí)候會(huì)有[不同]的表現(xiàn)

有一個(gè)比較經(jīng)典的多態(tài)實(shí)例:

有一個(gè)Animal類,它有Cat,和Dog兩個(gè)子類,在Animal中有個(gè)say方法,當(dāng)Cat調(diào)用這個(gè)方法的時(shí)候輸出的是“小貓喵喵喵”,當(dāng)Dog調(diào)用這個(gè)方法時(shí),輸出的是“小狗汪汪汪”,這就是Java多態(tài)的實(shí)現(xiàn)。

這里我們寫另外一個(gè):

—父類:Person.java

import java.util.Scanner;
public class Person {
    public int salary;
    public int allSalary(){
        return 0;
    }
    public static void main(String[] args) {
        Person p = null;
        for (int n = 0; n < 3; n++) {
            @SuppressWarnings("resource")
            Scanner sc = new Scanner(System.in);
            System.out.println("請(qǐng)輸入一個(gè)1-3的數(shù)字:\n1 is Teacher\n2 is Scientis\n3 is Waiter");
            int i = sc.nextInt();
            //分別指向了不同的子類,輸出的結(jié)果是不一樣的
            if (i == 1) {
                p = new Teacher(5000);
                System.out.println(p.allSalary());
            } else if (i == 2) {
                p = new Scientist(5000);
                System.out.println(p.allSalary());
            } else if (i == 3) {
                p = new Waiter(5000);
                System.out.println(p.allSalary());
            } else {
                System.out.println("?\n請(qǐng)輸入1-3");
            }
        }
}
}

—子類:Scientist .java

 public class Scientist extends Person{
    public Scientist(int salary){
        this.salary = salary;
    }
    public int allSalary(){
        int aa = salary*12+36500;
        System.out.print("五五開一年的工資:");
        return aa;
    }
}

Waiter.java

public class Waiter extends Person{
    public Waiter(int salary){
        this.salary = salary;
    }
    public int allSalary(){
        int aa = salary*12;
        System.out.print("服務(wù)員一年的工資:");
        return aa;
    }
}

Teacher .java

public class Teacher extends Person{
    public Teacher(int salary){
        this.salary = salary;
    }
    public int allSalary(){
        int aa = salary*12+3650;
        System.out.print("教師一年的工資:");
        return aa;
    }
}

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)java多態(tài)的案例分析大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI