子類繼承抽象父類的方法和抽象父類的子類的一些問題
阿新 • • 發佈:2019-02-06
問題:子類繼承抽象父類的方法,子類重寫全部的父類抽象方法,但是不寫方法體。那子類還是抽象的麼?
詳細:例如 父類public abstract void a();子類寫 void a(){}不寫方法體 ,可以咩。。必須要實現才可以麼。。。?隨便寫點方法體?
回答:
void a(){
}
裡面 {} 就是方法體了,算是實現父類方法了。
如果寫成 void a(); 這個還是抽象方法。
補充 :上一個問題結束的太快,我都無法補充了。
追問:啊哈哈哈哈哈哈哈,,,sorry。。。怪我 只要有花括號就是 實現方法了是這意思吧哈。
補充:是的,方法名後嗎花括號以及它包含的內容都是方法體。
問題2:書上寫如果抽象父類的子類不能實現所有抽象方法,那麼子類也是抽象的。那麼問題來了,如果父類有5個抽象方法,子類寫了4個但是都實現了,那之類算抽象類還是普通類呢?抽象類不能用new來建立例項的話,那怎麼引用抽象類?有什麼類似的程式碼嗎?
回答:
如果沒有實現抽象父類的全部抽象方法,那麼子類只能定義為抽象類
詳細:例如 父類public abstract void a();子類寫 void a(){}不寫方法體 ,可以咩。。必須要實現才可以麼。。。?隨便寫點方法體?
回答:
void a(){
}
裡面 {} 就是方法體了,算是實現父類方法了。
如果寫成 void a(); 這個還是抽象方法。
補充 :上一個問題結束的太快,我都無法補充了。
追問:啊哈哈哈哈哈哈哈,,,sorry。。。怪我 只要有花括號就是 實現方法了是這意思吧哈。
補充:是的,方法名後嗎花括號以及它包含的內容都是方法體。
問題2:書上寫如果抽象父類的子類不能實現所有抽象方法,那麼子類也是抽象的。那麼問題來了,如果父類有5個抽象方法,子類寫了4個但是都實現了,那之類算抽象類還是普通類呢?抽象類不能用new來建立例項的話,那怎麼引用抽象類?有什麼類似的程式碼嗎?
回答:
如果沒有實現抽象父類的全部抽象方法,那麼子類只能定義為抽象類
public abstract class Shape { public abstract void getArea(); } public class Circle extends Shape { private int radius = 5; public void getArea(){ System.out.println(Math.pi * this.radius * this.radius); } } public class Test{ public static void main(String[] args){ Shape s = new Circle(); s.getArea(); } }