什么是籠統(tǒng)類
籠統(tǒng)類與一般類主要兩點(diǎn)不同:
1、在類的修飾符后面多了一個(gè)abstract關(guān)鍵字
2、籠統(tǒng)類是不允許經(jīng)過new來實(shí)例化的
因?yàn)榛\統(tǒng)類不能經(jīng)過new來實(shí)例化,所以根本上是在承繼中當(dāng)做父類運(yùn)用。
什么是籠統(tǒng)辦法
籠統(tǒng)辦法的界說需求加上abstract關(guān)鍵字,不能有辦法體,以封號(hào)結(jié)束,比方:
publicabstractvoidgetOtherSalary();
籠統(tǒng)辦法的詳細(xì)完成,需求在子類中完成。注意:static、final的辦法,不能被申明為籠統(tǒng)辦法。
籠統(tǒng)類與籠統(tǒng)辦法
籠統(tǒng)類不一定包括籠統(tǒng)辦法,但如果一個(gè)類包括了籠統(tǒng)辦法,那這個(gè)類一定是籠統(tǒng)類,不然編譯不經(jīng)過。
什么時(shí)分用籠統(tǒng)辦法
籠統(tǒng)辦法通常用于父類中。父類通常都是用于界說一些公共辦法、公共屬性等,但是實(shí)際項(xiàng)目可能會(huì)出現(xiàn)某些辦法界說在父類中,父類卻無法給出詳細(xì)的完成,此刻就是籠統(tǒng)辦法出場(chǎng)的時(shí)分了。比方下文實(shí)例中,員工在公司中的收入都包括根本薪酬以及績效獎(jiǎng)金,根本薪酬大家都相同,但是績效獎(jiǎng)金就因崗位而異了,所以績效獎(jiǎng)金在員工類中僅僅個(gè)辦法體,沒有詳細(xì)完成。
籠統(tǒng)辦法與規(guī)劃形式
籠統(tǒng)辦法在規(guī)劃形式中有比較多的體現(xiàn),特別是用于模板辦法規(guī)劃形式,詳見下文實(shí)例
實(shí)例
1.籠統(tǒng)辦法的運(yùn)用
需求描述:公司里的員工分為一般程序員和技能總監(jiān),一切員工的根本薪水都是10000元每個(gè)月,程序員的績效獎(jiǎng)金每個(gè)月3000元,技能總監(jiān)的績效獎(jiǎng)金每個(gè)月20000元。
了解了需求后,我們先界說一個(gè)員工類Employee,如下:
/**
*界說員工類,每個(gè)員工的薪水都由根本薪資跟績效獎(jiǎng)金組成
*/publicabstractclassEmployee{/**
*崗位稱號(hào)
*/privateStringjobName;/**
*一切員工的每月根本薪資都相同
*@return*/publicintgetBaseSalary(){return10000;
}/**
*一切員工都有績效獎(jiǎng)金,但是一般程序員跟技能總監(jiān)的不相同,
*所以這兒無法給出詳細(xì)完成,需求在子類中完成
*@return*/publicabstractintgetOtherSalary();publicStringgetJobName(){returnjobName;
}publicvoidsetJobName(StringjobName){this.jobName=jobName;
}
}
界說程序員類Coder,承繼員工類,完成getOtherSalary()辦法,如下:
/**
*程序員類,承繼Employee類
*/publicclassCoderextendsEmployee{/**
*因?yàn)槌欣^了Employee類,所以有必要完成Employee類中的籠統(tǒng)辦法getOtherSalary()
*@return*/@OverridepublicintgetOtherSalary(){return3000;
}
}
界說技能總監(jiān)類Cto,承繼員工類,完成getOtherSalary()辦法,如下:
/**
*技能總監(jiān)類,承繼Employee類
*/publicclassCtoextendsEmployee{/**
*因?yàn)槌欣^了Employee類,所以有必要完成Employee類中的籠統(tǒng)辦法getOtherSalary()
*@return*/@OverridepublicintgetOtherSalary(){return20000;
}
}
最終打印程序員與技能總監(jiān)每個(gè)月的薪水:
publicclassAbstractMain{publicstaticvoidmain(String[]args){
Codercoder=newCoder();
coder.setJobName(“程序員”);
System.out.println(coder.getJobName()+”每個(gè)月薪資為:”);
System.out.println(“根本薪資:”+coder.getBaseSalary()+”元”);
System.out.println(“績效獎(jiǎng)金:”+coder.getOtherSalary()+”元”);
Ctocto=newCto();
cto.setJobName(“技能總監(jiān)”);
System.out.println(cto.getJobName()+”每個(gè)月薪資為:”);
System.out.println(“根本薪資:”+cto.getBaseSalary()+”元”);
System.out.println(“績效獎(jiǎng)金:”+cto.getOtherSalary()+”元”);
}
}
履行以上程序后,輸出:
程序員每個(gè)月薪資為:
根本薪資:10000元
績效獎(jiǎng)金:3000元
技能總監(jiān)每個(gè)月薪資為:
根本薪資:10000元
績效獎(jiǎng)金:20000元
2.籠統(tǒng)辦法與模板辦法規(guī)劃形式
在完成了以上需求后,此刻又提出新需求,依照以下格局打印每個(gè)月的薪酬條,而且打印的次序有必要按以下格局打印出來:
XXX每個(gè)月薪資為:
根本薪資:XXX元
績效獎(jiǎng)金:XXX元
該月總薪酬為:XXX元
依照第一個(gè)比如的完成方式無法滿意這個(gè)需求,第一個(gè)比如的打印次序是由調(diào)用者決定的,無法統(tǒng)一操控。此刻就是模板辦法規(guī)劃形式上臺(tái)的時(shí)分了。基于第一個(gè)比如,改造一下員工類Employee,增加打印薪酬條的辦法publicfinalvoidprintSalary()如下:
/**
*界說員工類,每個(gè)員工的薪水都由根本薪資跟績效獎(jiǎng)金組成
*/publicabstractclassEmployee{/**
*崗位稱號(hào)
*/privateStringjobName;/**
*一切員工的每月根本薪資都相同
*@return*/publicintgetBaseSalary(){return10000;
}/**
*一切員工都有績效獎(jiǎng)金,但是一般程序員跟技能總監(jiān)的不相同,
*所以這兒無法給出詳細(xì)完成,需求在子類中完成
*@return*/publicabstractintgetOtherSalary();/**
*獲取每個(gè)月薪酬總額
*@return*/publicintgetTotalSalary(){returnthis.getBaseSalary()+this.getOtherSalary();
}/**
*界說履行次序模板,模板中有些辦法(籠統(tǒng)辦法)是要在子類中完成
*打印薪酬條,界說為final類,制止被子類重寫
*/publicfinalvoidprintSalary(){
System.out.println(this.jobName+”每個(gè)月薪資為:”);
System.out.println(“根本薪資:”+this.getBaseSalary()+”元”);
System.out.println(“績效獎(jiǎng)金:”+this.getOtherSalary()+”元”);
System.out.println(“該月總薪酬為:”+getTotalSalary()+”元”);
}publicStringgetJobName(){returnjobName;
}publicvoidsetJobName(StringjobName){this.jobName=jobName;
}
}
打印每個(gè)月薪酬條:
publicclassAbstractMain{publicstaticvoidmain(String[]args){
Codercoder=newCoder();
coder.setJobName(“程序員”);
coder.printSalary();
Ctocto=newCto();
cto.setJobName(“技能總監(jiān)”);
cto.printSalary();
}
}
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)