abstract類(抽象類)
abstract類(抽象類)
abstract class A{
}
** abstract()方法**
abstract int min(int x,int y);
- abstract類中可以有abstract()方法,也可以沒有有abstract()方法。
- abstract類不能使用new運(yùn)算創(chuàng)建對象昏鹃。他只能被子類繼承時才能發(fā)揮作用,且子類必須重寫其abstract()方法诀诊,對于非abstract()方法可以重寫洞渤,也可不重寫,根據(jù)情況而定即可属瓣。即使抽象類中不包含抽象方法也不能被實(shí)例化您宪。
- 對于abstract()方法,只允許聲明奠涌,不允許實(shí)現(xiàn)宪巨,即沒有方法體,也沒有花括號溜畅。這樣的方法必須在abstract類被繼承時進(jìn)行重寫捏卓,所以不允許用final關(guān)鍵字修飾abstract類或方法。因?yàn)閒inal修飾的類或方法是不允許北繼承或者重寫的慈格。
- 具體子類在繼承抽象類時怠晴,必須重寫其所有抽象方法,否則浴捆,仍是一個抽象類蒜田。由此,也可知选泻,抽象類可以繼承抽象類冲粤。
- abstract類中可以有構(gòu)造方法美莫,但不能有抽象構(gòu)造方法。
因?yàn)樽宇惒焕^承父類的構(gòu)造方法梯捕,對于抽象方法必須進(jìn)行重寫厢呵,而二者相互矛盾。 - 模板方法設(shè)計模式是抽象類的一個典型應(yīng)用傀顾。
- 抽象類:直接定義的抽象類;繼承抽象類沒有重寫其全部的抽象方法;實(shí)現(xiàn)接口沒有重寫其全部的抽象方法襟铭。
interface接口
interface 接口名稱{
}
接口體中包括常量和抽象方法兩部分,注意沒有普通成員變量和普通成員方法方法短曾。
接口中方法的修飾符為public abstract,常量的修飾符為public static final寒砖。以上修飾符號均可省略。
public final int a=100;//等價寫法:int a=100;
public abstract int sum(int x,int y);//等價寫法: int sum(int x,int y);
抽象類和接口的比較
- 均不能使用new運(yùn)算創(chuàng)建對象
- 在接口中只可以有abstract方法嫉拐,不能有普通成員方法入撒。在abstract類中,既可以有abstract方法椭岩,也可以有普通成員方法茅逮。
- 在接口中只可以有常量,不能有變量判哥。在abstract類中献雅,既可以有常量,也可以有變量塌计。
abstract class A{
public int a=5;//這樣定義變量可以
public int a=a+5//這樣不可以
}
- 抽象類中可以有構(gòu)造方法挺身,接口中不能有構(gòu)造方法
- 抽象類中可以包含靜態(tài)方法,接口中沒有靜態(tài)方法锌仅。
- 一個類可以實(shí)現(xiàn)多個接口章钾,但只能繼承一個抽象類
- 抽象類中抽象方法的訪問類型可以是public,protected和默認(rèn)類型。
接口中抽象方法訪問類型只有public热芹。