標籤:有獎 關鍵字 程式 nbsp public xiaomi 基礎 必須 分享
一、基礎概念
抽象事物,是若沒有具體的資訊可以描述這個事物,這個事物可以稱為抽象事物。
抽象類別,是不斷的向上抽取而來。抽取方法聲明而不確定具體的方法內容。由不同的子類來完成具體的方法內容。
(一)抽象類別的特點:
1、抽象方法沒有方法體,必須由抽象關鍵字abstract來修飾。
1、抽象方法一定是存在於抽象類別中,必須有抽象關鍵字abstract來修飾。
2、抽象類別不能執行個體化。不能用new關鍵字建立對象。
3、子類必須覆蓋抽象類別中的所有抽象方法後,才可以執行個體化。否則該子類還是一個抽象類別。
(二)抽象類別中可以有建構函式:
因為抽象類別不能建立對象,所有抽象類別中的建構函式是不能給抽象類別的對象進行執行個體化。但是抽象類別可以有子類,抽象類別的建構函式可以子類的對象進行初始化。所有抽象類別中可以有建構函式。
(三)抽象類別和一般類的區別:
抽象類別可以描述事物的屬性和行為。描述事物的資訊不具體,可以定義抽象方法,但不能進行執行個體化。
一般類可以描述事物的屬性和行為。事物的資訊是具體的,不可以定義抽象方法,但可以進行執行個體化。
(四)抽象類別一定是個父類:
因為必須需要子類覆蓋抽象方法後,才可以執行個體化。才能使用這些方法。
(五)抽象類別中是可以不定義抽象方法的:
這時的抽象類別的功能,僅僅是讓該類不能建立對象。
(六)抽象關鍵字abstract和那些關鍵字不能共存的:
關鍵字final、關鍵字private、關鍵字static。
二、執行個體代碼
要求:公司中有程式員和專案經理。程式員有姓名、工號和薪水。並為公司進行工作。專案經理除了有姓名、工號和薪水外還有獎金。也為公司進行工作。對給出的需求進行資料建模。
分析:
程式員:屬性:姓名、工號、薪水
行為:工作
專案經理:屬性:姓名、工號、薪水、獎金
行為:工作
兩者不存在所屬關係,但是有共性內容,可以向上抽取為僱員。
僱員:屬性:姓名、工號、薪水
行為:工作
1 //抽象類別 Employee 2 abstract class Employee 3 { 4 private String name; 5 private int id; 6 private double pay; 7 8 public void setName(String name) 9 {10 this.name = name;11 }12 public void setId(int id)13 {14 this.id = id;15 }16 public void setPay(double pay)17 {18 this.pay = pay;19 }20 21 public String getName()22 {23 return name;24 }25 public int getId()26 {27 return id;28 }29 public double getPay()30 {31 return pay;32 }33 34 Employee(String name,int id,double pay)35 {36 this.name = name;37 this.id = id;38 this.pay = pay;39 }40 41 //抽象方法 work42 public abstract void work();43 }44 45 //描述程式員繼承抽象類別 Employee46 class Programmer extends Employee47 {48 Programmer(String name,int id,double pay)49 {50 super(name,id,pay); 51 }52 public void work()53 {54 System.out.println("name: "+this.getName()+" id: " +this.getId()+" pay: "+this.getPay() );55 System.out.println("Programmer work ......");56 }57 58 } 59 60 61 //描述專案經理繼承抽象類別 Employee62 class Manager extends Employee63 64 {65 private double bonus;66 67 Manager(String name,int id,double pay,double bonus)68 {69 super(name,id,pay);70 this.bonus = bonus;71 }72 public void work()73 {74 System.out.println("name: "+this.getName()+" id: " +this.getId()+" pay: "+this.getPay()+" bonus: " +bonus);75 System.out.println("Manager work ......");76 }77 }78 79 class AbstractDemo80 {81 public static void main(String[] args) 82 {83 Programmer a = new Programmer("xiaoming",001,5000.00);84 a.work();85 Manager m = new Manager("xiaohong",010,8000.00,600.00);86 m.work();87 }88 }
三、代碼執行
Java物件導向之抽象類別abstract 入門執行個體