關(guān)于Java中的抽象類
? ? ? ?抽象類:
抽象:不具體,看不明白關(guān)鍵字abstract
抽象類的特點:
1.抽象方法只能定義在抽象類中,抽象類和抽象方法必須由abstract關(guān)鍵字修飾(可以描述類和方法。不可以描述變量)
2.抽象方法只定義方法聲明,并不定義方法實現(xiàn)。
3.抽象類不可以被創(chuàng)建對像(實例化)
4.只有通過之類繼承抽象類并覆蓋了抽象類中的所有抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。
抽象類的細節(jié):
1.抽象類中是否有構(gòu)造函數(shù)?有,用于給子類對象進行初始化
2.抽象類中是否可以定義非抽想法?
可以。其實,抽象類和一般類沒有太大的區(qū)別,都是在描述事物,只不過抽象類在描述事物時,有些功能不具體。所以抽象類和一般類在定義上,都是需要定義屬性和行為的。只不過,比一般類多了一個抽象函數(shù)。而且比一般類少了一個創(chuàng)建對象的部分。
3.抽象關(guān)鍵字 abstract和那些關(guān)鍵字不可以共存。final,private,staitc、、因為抽象類要倍實現(xiàn)和繼承、
4.抽象類中可不可以不定義抽象方法?可以。抽象方法目的僅僅為了不讓該類創(chuàng)建對象。
/*
? 員工和經(jīng)理的案例
? 員工只要入職,必須具備姓名工資還有工號
*/
//將共性內(nèi)容抽取
abstract class Company
{
?private String name;//姓名
?private String id;//工號
?private double money;//工資
?Company(String name,String id,double money){
? ? this.name = name;
? ? this.id = id;
? ? this.money=money;
?}
?//提供get set方法,間接的訪問類中成員變量
?public String getName() {
? return name;
?}
?public void setName(String name) {
? this.name = name;
?}
?public String getId() {
? return id;
?}
?public void setId(String id) {
? this.id = id;
?}
?public double getMoney() {
? return money;
?}
?public void setMoney(double money) {
? this.money = money;
?}
?public abstract void job();
}
//定義員工類
class Programming extends Company
{
?//員工類的構(gòu)造方法
?Programming(String name,String id,double money){
? ? super(name,id,money);
?}
?//工作的方法
?public void job(){
? ? System.out.println(super.getName()+".."+super.getId()+".."+super.getMoney()+"寫代碼");
?}
}
//定義經(jīng)理類
class Manager extends Company
{
?Manager(String name,String id,double money,double bonus){
? ? super(name,id,money);
? ? this.bonus = bonus;
?}
?private double bonus;//獎金
?//工作的方法
?public void job(){
? ? System.out.println(super.getName()+".."+super.getId()+".."+super.getMoney()+"..."+bonus+"管理工作");
?}
}
class AbstractTest1
{
?public static void main(String[] args)
?{
? Programming p = new Programming("zhangsan","開發(fā)部001",10003.31);
? p.job();
? Manager m = new Manager("李四","管理部001",1000.21,3453454.5);
? m.job();
? //System.out.println("Hello World!");
?}
}
? ? ? ??