Java中的抽象類

2021-08-21 15:30:03 字數 2021 閱讀 8719

從某種角度看,祖先類更具有通用性,我們只將它作為派生其他類的基類,而不作為想實現特定的例項類。

有的時候,許多子類都需方法,但是,超類並不使用這個方法,這些子類都要自身重寫這個方法,這時候超類中只需要宣告有這種方法,沒有必要有具體的執行語句。這種情況下,可以使用關鍵字abstract在超類中宣告這個函式,這個函式在超類中只有宣告,沒有定義,除了方法名和空的引數列表之外沒有任何東西。包含乙個或多個抽象方法的類本身就必須宣告為抽象類

超類中的抽象方法一定要在子類中得到實現定義,否則子類中會報錯。

但是有種情況下是一種特殊情況能new 出例項來。

public abstract class abstrect
public class text 

};aa.echo();

}}

這種情況在程式中是極少出現的,因為例項化的時候連帶著將抽象類中的抽象方法也要定義了,如果抽象類中有多個抽象方法,那麼我例項乙個抽象類的物件要用幾十行**甚至上百行,這種情況是不希望出現的。在這裡注意一點,如果抽象類中有空的非抽象的方法可以不在例項化的時候定義,例如**中的echo1()如果不是抽象的,在測試的類中不會報錯。

public abstract class abstrect  

public abstrect(string name ,int age)

public int getage()

public void setage(int age)

public string getname()

public void setname(string name)

}

public class abstractchild  extends abstrect

@override

public void echo()

}

public class text 

}

結果:

abstrectchild 類

由此,我們認識到,抽象類中可以存在抽象方法,也可以包含具體的方法和具體的資料。建議盡量將通用的域和方法放在超類中。抽象方法充當著佔位的角色,他們的具體實現在子類中。擴充套件抽象類的方法有兩種,一種是在抽象類中定義部分抽象方法或者不定義抽象方法,這樣就必須將子類也標記為抽象類,剩餘的抽象方法在子類中定義。另一種是定義全部的抽象方法,這樣一來,子類就不是抽象的了。

public abstract  class person 

public string getname()

public void echo()

}

public class employee extends person 

public double getsalary()

public localdate gethireday()

public void raisesalary( double x)

public string change(double sa)

public void echo()

@override

public string getdescripition()

}

public class student extends person 

public void echo()

@override

public string getdescripition()

}

public class generic 

}}

結果:

我是員工類的抽象方法

我是學生類的抽象方法

taobao wo****aobao

java中的抽象類

抽象類是指類被修飾符abstract修飾的類。抽象類不能夠建立物件。抽象方法是只有方法名,沒有方法體,沒有具體的實現。含有抽象方法的類一定是抽象類!抽象的動物類 public abstract class animal在繼承關係中,子類繼承抽象的父類,如果在子類中沒有實現父類的抽象方法,則子類一定是...

java 中的抽象類

在自上而下的繼承層次結構中,位於上層的類更具有通用性,甚至可能更加抽象。從某種角度看,祖先類更加通用,它只包含一些最基本的成員,人們只將它作為派生其他類的基類,而不會用來建立物件。甚至,可以只給出方法的定義而不實現,由子類根據具體需求來具體實現。這種只給出方法定義而不具體實現的方法被稱為抽象方法ab...

Java中的抽象類

抽象類定義 1 語法定義 抽象類錢使用abstract關鍵字修飾,則該類為抽象類。2 應用場景 a 在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確知道這些子類如何實現這些方法 抽象類約束子類必須有哪些方法,但並不關注子類怎麼去實現這些方法。當多個類中出現相同功能,但是功能主體不同...