不多說,先來段代碼。
public class Abstract { public static void main(String[] args) { cl2 c=new cl2(); c.method(); } } abstract class Abc { public abstract void method(); } class cl2 extends Abc { public void method() { System.out.println("具體的方法"); } }
一個抽象類裡面可以沒有抽象方法
比如
abstract class Abc { public void method() { System.out.println("抽象類面的方法可以是具體的"); } }
這是一個抽象類,但是他的方法是具體,這是可以的,沒有報錯。
但是如果
class Abc { abstract public void method(); }
這是會報錯的,因為有抽象方法必須是抽象類。
----------------------------------------
class cl2 extends Abc { public void method() { System.out.println("具體的類"); } }
此時繼承了ABC類,cl2類是一個具體的類。我們區份一個類是抽象還是具體,就是看abstract關鍵字
如果有這個關鍵字,他就是抽象類,沒有就是一個具體的類,所以上面的代碼中cl2是具體類。
繼續
abstract class Abc { abstract public void method(); } class cl2 extends Abc { }
這裡會報錯,cl2沒有關鍵字abstract 所以他是一個具體的類,裡面的方法必須具體,但是他繼承了
ABC類,擁有了抽象方法,所以會報錯,所以需要在cl2裡面具體mehod方法。
當然也繼承抽象類的子類也可以是抽象類
比如
abstract class Abc { abstract public void method(); } abstract class cl2 extends Abc {
}
cl2是一個抽象類,他繼承了ABC類,擁有了ABC類中的抽象方法
但是他無需具體,因為他自己就是一個抽象類
------------------------------------
上面是抽象類一些注意的點。
總的來說,一個抽象類可以沒有抽象方法,但是有抽象方法必須是抽象類,具體的類裡面必須都是具體的方法。
大一狗初學,不對請諒解