第十二章多態(tài)

就是把同一個父類的子類,用父類實現(xiàn)

例:feed(Pet pet)
多態(tài)

同一個引用類型,使用不同的實例而執(zhí)行不同的操作;

使用多態(tài)的思路

-編寫父類
-編寫子類 , 子類重寫父類的方法
-運行時,使用父類的類型,子類的對象

例:  Pet   pet=  new  Dog();

使用多態(tài)優(yōu)化主人給寵物喂食

例:  public   class   Master  {                  
          public  void  feed(Pet  pet){           //使用父類作為方法的形參
                    Pet.eat();                           //喂食          
          }       
}

測試類的改變

例:Pet   pet  =new  Dog();
     Master  master=new  Master();
     mater .feed(pet)     // 同一種操作方式,不同的操作方法   
練習

工資支付系統(tǒng)
定義一個Employee抽象基類(name)

公司有以下幾種員工:

開發(fā)人員:工資計算方式,每月固定工資
銷售人員:底薪+提成
硬件工程師:生產零件,每個50元
小時工:按工作時間付工資,每小時30元

主類(測試類)

創(chuàng)建不同類型的6名員工對象,計算他們應付的月工資之和

例:package com.emp;
                                                        //開發(fā)類
/**
 * Created by ttc on 2018/5/29.
 */
public class Developer extends Employee {
    int salary;                                         //每月工資

    public Developer(int salary)                        //構造方法
    {
        this.salary = salary;
    }

    @Override                                           //計算工資
    public int calcSalary() {
        return salary;
    }
}
例:package com.emp;

/**
 * Created by ttc on 2018/5/29.
 */
public abstract class Employee {                             //抽象類
    String name;                                             //定義變量名字

    public abstract int calcSalary();                        //抽象計算工資的方法

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
例:package com.emp;
                                                                   //銷售類      
/**
 * Created by ttc on 2018/5/29.
 */
public class SalesMan extends Employee{                 
    int base_sal;                                                  //底薪
    int comm;                                                      //提成

    public SalesMan(int base_sal, int comm)                        //有參構造方法
    {
        this.base_sal = base_sal;
        this.comm = comm;
    }

    @Override
    public int calcSalary() {                                       //計算工資 
        return base_sal + comm;
    }
}
例:package com.emp;
                                                    //工程師類
/** 
 * Created by ttc on 2018/5/29.
 */
public class HardwareEngineer extends Employee{

    int num;

    public HardwareEngineer(int num)                //有參構造方法
    {
        this.num = num;
    }   

    @Override
    public int calcSalary() {
        return 50*num;
    }       //計算工資
}
例:package com.emp;
                                                            //小時類
/**
 * Created by ttc on 2018/5/29.
 */
public class HourWorker extends Employee {
    int hours;
    public HourWorker(int hours)                            //有參構造方法
    {
        this.hours = hours;
    }

    @Override
    public int calcSalary() {
        return 30*hours;
    }           //計算工資
}
例:package com.emp;
                                                            //測試類
/**
 * Created by ttc on 2018/5/29.
 */
public class Main {
    public static void main(String[] args) {

        int index = 0;
        Employee[] employees = new Employee[6];             //定義一個父類數組  
        employees[index++] = new Developer(10000);
        employees[index++] = new SalesMan(2000,5000);           
        employees[index++] = new HardwareEngineer(120);
        employees[index++] = new HourWorker(200);
        employees[index++] = new HourWorker(300);
        employees[index] = new HourWorker(500);
        int sum = 0;
        for(Employee employee : employees)
        {
            sum += employee.calcSalary();
        }
        System.out.println(sum);
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,642評論 18 399
  • Python 面向對象Python從設計之初就已經是一門面向對象的語言,正因為如此,在Python中創(chuàng)建一個類和對...
    順毛閱讀 4,366評論 4 16
  • 5繼承 5.1 類、超類和子類 重用部分代碼,并保留所有域。“is-a”關系,用extends表示。 已存在的類被...
    我快要上天啦閱讀 951評論 1 3
  • 感賞昨天紙巾老板下大雨又送我上班,感覺自己被人需要真的很了不起 感賞晚飯做給老公吃,和他說我們老了就這樣吃飯聊天,...
    吳若閱讀 138評論 0 0
  • 字符串,數組,數字,布爾,NULL,undefined,對象。 JavaScript只有一種數字類型。數字可以帶小...
    青木川_閱讀 247評論 0 0

友情鏈接更多精彩內容