一、什麼是抽象類別
#由abstract修飾的方法叫抽象方法;由abstract修飾的類別叫抽象類別。抽象的類別無法進行實例化,因為他不是具體存在的類,或者說這樣的類別還不夠完善,不能直接使用new關鍵字呼叫其建構器來產生該類別的物件。我們可以使用abstract定義一個抽象類別和抽象方法,範例程式碼如下:
abstract class 类名 { abstract int 方法名(int x,int y); }
抽象的方法沒有方法體。要注意的是在抽象類別中既可以有抽象方法,也可以有普通方法,注意抽象方法是沒有方法體的(也就是方法後面是沒有大括號的)。凡是繼承這個抽象類別的實體子類,都必須實作這個抽象方法。
我們總結抽象類別的特點:
(1)抽象類別不能被實例化;
(2)建構方法和static 方法不能是抽象的;
(3)父類別的抽象方法往往在子類別中實作;
(4)抽象類別可以具有指向子類別物件的物件參考。
二、抽象類別的範例
我們先來看看要完成的實際範例:
#1、定義抽象類別員工Employee;
(a)保護欄位:姓名name,性別gender,年齡age等基本屬性。
(b)定義抽象方法函數getsalary()表示領工資的運算。
(c)定義普通函數whoami()輸出 :我是 姓名
(d)擁有(姓名name,性別gender)參數的建構子。
定義一個經理類別Manager派生於員工;
(a)除了有員工等基本屬性外,還有職位等級gree私有屬性。
(b)經理領7000元薪資,列印並輸出薪資。
(c)重寫父類別的whoami(),呼叫父類別的whoami()方法,再輸出:我是一名經理。
定義一個會計類別Accounting,衍生於員工類別;
(a)除了有員工等基本屬性外,還有會計等級rating私有屬性。
(b)會計領3000元薪資,列印並輸出薪資。
(c)重寫父類別的whoami(),呼叫父類別的whoami()方法,再輸出:我是會計。
/** * 定义类员工Employee, */ public abstract class Employee { protected String name; protected boolean gender; protected int age; public Employee(String name,boolean gender){ this.name=name; this.gender=gender; } /** * 表示领工资的操作 */ public abstract void getsalary(); public void whoami(){ System.out.println("我是"+name); } }
我們新建一個經理類Manager,繼承Employee類,這時候Eclipse就提示我們必須要重寫抽象方法getsalary。範例程式碼如下:
/** * 经理类 */ public class Manager extends Employee{ private String gree; public Manager(String name,boolean gender){ super(name,gender); } //重写父类的抽象方法 public void getsalary(){ System.out.println("经理领7000元工资"); } public void whoami(){ super.whoami();//显示调用父类的方法 System.out.println("我是经理"); } }
接下來是會計類別。和上面的經理類差不多了。
/** * 会计 */ public class Accounting extends Employee { private int rating; public Accounting(String name, boolean gender) { super(name, gender); } @Override public void getsalary() { System.out.println("会计发3000工资"); } public void whoami() { super.whoami();// 显示调用父类的方法 System.out.println("我是会计"); } }
php中文網,大量的免費Java入門教學,歡迎線上學習!
以上是java什麼是抽象類的詳細內容。更多資訊請關注PHP中文網其他相關文章!