java的抽象類是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的渝中網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一、什么是抽象類
由abstract修飾的方法叫抽象方法;由abstract修飾的類叫抽象類。抽象的類無法進(jìn)行實例化,因為他不是具體存在的類,或者說這樣的類還不夠完善,不能直接使用new關(guān)鍵字調(diào)用其構(gòu)造器生成該類的對象。我們可以使用abstract定義一個抽象類和抽象方法,示例代碼如下:
abstract class 類名 { abstract int 方法名(int x,int y); }
抽象的方法沒有方法體。需要注意的是在抽象類中既可以有抽象方法,也可以有普通方法,注意抽象方法是沒有方法體的(也就是方法后面是沒有大括號的)。凡是繼承這個抽象類的實體子類,都必須要實現(xiàn)這個抽象方法。
我們總結(jié)一下抽象類的特點:
(1)抽象類不能被實例化;
(2)構(gòu)造方法 和 static 方法不能是抽象的;
(3)父類的抽象方法往往在子類中實現(xiàn);
(4)抽象類可以具有指向子類對象的對象引用。
二、抽象類的例子
我們先來看看要完成的實際例子:
1、定義抽象類員工Employee;
(a)保護(hù)字段:姓名name,性別gender,年齡age等基本屬性。
(b)定義抽象方法函數(shù)getsalary()表示領(lǐng)工資的操作。
(c)定義普通函數(shù)whoami()輸出 :我是+姓名
(d)擁有(姓名name,性別gender)參數(shù)的構(gòu)造函數(shù)。
定義一個經(jīng)理類Manager派生于員工;
(a)除了有員工等基本屬性外,還有崗位級別gree私有屬性。
(b)經(jīng)理領(lǐng)7000元工資,打印并輸出工資。
(c)重寫父類的whoami(),調(diào)用父類的whoami()方法,再輸出:我是一名經(jīng)理。
定義一個會計類Accounting,派生于員工類;
(a)除了有員工等基本屬性外,還有會計等級rating私有屬性。
(b)會計領(lǐng)3000元工資,打印并輸出工資。
(c)重寫父類的whoami(),調(diào)用父類的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; } /** * 表示領(lǐng)工資的操作 */ public abstract void getsalary(); public void whoami(){ System.out.println("我是"+name); } }
我們新建一個經(jīng)理類Manager,繼承Employee類,這時候Eclipse就提示我們必須要重寫抽象方法getsalary。示例代碼如下:
/** * 經(jīng)理類 */ public class Manager extends Employee{ private String gree; public Manager(String name,boolean gender){ super(name,gender); } //重寫父類的抽象方法 public void getsalary(){ System.out.println("經(jīng)理領(lǐng)7000元工資"); } public void whoami(){ super.whoami();//顯示調(diào)用父類的方法 System.out.println("我是經(jīng)理"); } }
接下來是會計類。和上面的經(jīng)理類差不多了。
/** * 會計 */ public class Accounting extends Employee { private int rating; public Accounting(String name, boolean gender) { super(name, gender); } @Override public void getsalary() { System.out.println("會計發(fā)3000工資"); } public void whoami() { super.whoami();// 顯示調(diào)用父類的方法 System.out.println("我是會計"); } }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。