每次看到java 都會想到老闆在講那句 “你沒有多型的觀念” “你沒有多型的觀念” “你沒有多型的觀念” $$^%$#%#$.
雖然不是講給我聽得拉 不過我覺得講給我聽也不為過
先來一段程式碼 然後 這篇就結束了 多型我不會…
public class FullTimeEmployee extends Employee { private double monthlySalary; //月薪 public void display() { super.display(); System.out.println("月薪=" + monthlySalary); } public FullTimeEmployee (int empno , String ename , double monthlySalary ) { super(empno, ename); this.monthlySalary = monthlySalary ; } //add public double getSalary() { return monthlySalary; } } ----------------------------------------------------------------------------------------------------------------------------------------------------------------- public class PartTimeEmployee extends Employee { private double hourPay; //時薪 private int workHour; //工作時數 public void display() { super.display(); System.out.println("hour pay=" + hourPay); System.out.println("work hour=" + workHour); } public PartTimeEmployee(int empno , String ename , double hourPay, int workHour) { super(empno, ename); this.hourPay = hourPay; this.workHour = workHour; } //add public double getSalary() { return hourPay * workHour; } } ----------------------------------------------------------------------------------------------------------------------------------------------------------------- public class Manager extends FullTimeEmployee { private double bonus; //獎金; 額外津貼; 特別補助 public void display() { super.display(); System.out.println("額外津貼=" + bonus); } public Manager (int empno , String ename , double monthlySalary, double bonus) { super(empno, ename, monthlySalary); this.bonus = bonus ; } //add public double getSalary() { double monthlySalary = super.getSalary(); return monthlySalary + bonus; } } ----------------------------------------------------------------------------------------------------------------------------------------------------------------- public class Employee { private int empno; private String ename; public void setEmpno(int empno) { this.empno = empno; } public int getEmpno() { return empno; } public void setEname(String ename) { this.ename = ename; } public String getEname() { return ename; } public Employee (int empno, String ename) { this.empno = empno; this.ename = ename; } public Employee (int empno) { this(empno, "-"); } public Employee (String ename) { this(0, ename); } public Employee () { this(0,"-"); //或 empno = 0; ename = "-"; } public void display() { System.out.println("empno=" + empno); System.out.println("ename=" + ename); } //add public double getSalary() { return 0; } } ------------------------------------------------------------------------------------- public class TestPolymorphism2 { public static void main(String[] args) { // Employee[] e = new Employee[3]; //宣告員工陣列,準備置入員工3人 // e[0] = new FullTimeEmployee(7002 ,"peter", 40000.0 ); // e[1] = new Manager(7003 ,"merry", 50000.0 , 10000.0); // e[2] = new PartTimeEmployee(7004 , "John" , 1000.0, 8); // for (int i = 0; i < e.length; i++) // System.out.println(e[i].getSalary()); // instanceof測試 // for (int i = 0; i < e.length; i++) // if(e[i] instanceof FullTimeEmployee) //Employee , FullTimeEmployee , Manager , PartTimeEmployee // System.out.println("yes"); // else // System.out.println("no"); // 另外第二種寫法 // Employee[] e = new Employee[3]; // Employee e0 = new FullTimeEmployee(7002 ,"peter", 40000.0 ); // Employee e1 = new Manager(7003 ,"merry", 50000.0 , 10000.0); // Employee e2 = new PartTimeEmployee(7004 , "John" , 1000.0, 8); // e[0] = e0; // e[1] = e1; // e[2] = e2; // for (int i = 0; i < e.length; i++) // System.out.println(e[i].getSalary()); // 再另第三種寫法 FullTimeEmployee e0 = new FullTimeEmployee(7002 ,"peter", 40000.0 ); Manager e1 = new Manager(7003 ,"merry", 50000.0 , 10000.0); PartTimeEmployee e2 = new PartTimeEmployee(7004 , "John" , 1000.0, 8); System.out.println(e0.getSalary()); System.out.println(e1.getSalary()); System.out.println(e2.getSalary()); } }