畢向東——JAVA基礎——繼承和抽象
阿新 • • 發佈:2019-02-12
1、繼承和抽象應用
/* 假如我們在開發一個系統時需要對員工進行建模,員工包含 3 個屬性: 姓名、工號以及工資。經理也是員工,除了含有員工的屬性外,另為還有一個 獎金屬性。請使用繼承的思想設計出員工類和經理類。要求類中提供必要的方 法進行屬性訪問。 員工類:name id pay 經理類:繼承了員工,並有自己特有的bonus。 經理和員工沒有繼承關係,有一些共同的屬性和功能,但功能內容不同 */ abstract class Employee { private String name; private String id; private double pay; Employee(String name,String id,double pay) { this.name=name; this.id=id; this.pay=pay; } public abstract void work(); } class Professional extends Employee { Professional(String name,String id,double pay) { super(name,id,pay); } public void work() { System.out.println("professional work"); } } class Manager extends Employee { private int bonus; Manager(String name,String id,double pay,int bonus) { super(name,id,pay); this.bonus=bonus; } public void work() { System.out.println("namager work"); } }
2、模板方法設計模式
/*模板方法設計模式: 模板方法,在定義功能時,一部分確定,一部分不確定,而確定的部分在使用不確定部分; 將不確定的部分暴露出去,由子類完成,不一定抽象,可以有預設方法; 確定的部分有時可以防止複寫。final */ /* 需求:獲取一段程式的執行時間。 原理:獲取程式開始和結束的時間,相減。 */ abstract class GetTime { public final void getTime() //final避免複寫 { long start=System.currentTimeMillis();//獲取時間 runCode(); long end=System.currentTimeMillis(); System.out.println("經過的毫秒數:"+(end-start)); } public abstract void runCode();//抽象 } class SubTime extends GetTime { public void runCode()//覆蓋 { for(int i=0;i<2000;i++) { System.out.print(i); } } } class GetTimeDemo { public static void main(String[] args) { SubTime gt=new SubTime(); gt.getTime(); } }