1. 程式人生 > >子類繼承抽象父類的方法和抽象父類的子類的一些問題

子類繼承抽象父類的方法和抽象父類的子類的一些問題

問題:子類繼承抽象父類的方法,子類重寫全部的父類抽象方法,但是不寫方法體。那子類還是抽象的麼?
詳細:例如 父類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();
    }
}