本日學習:
類別的繼承
class Circle{
private static double pi = 3.14;
private double radius;
public Circle(){ // 建構子
System.out.println("Circle() constructor called");
}
public void setRadius(double r){
radius = r;
System.out.println("radius = " + radius);
}
public void show(){
System.out.printf("area = %6.2f\n", pi * radius * radius);
}
}
class Coin extends Circle{
private int value;
public Coin(){
System.out.println("Coin() constructor called");
}
public void setValue(int t){
value = t;
System.out.println("value = " + value);
}
}
public class Ch19_1 {
public static void main(String[] args){
Coin coin = new Coin();
coin.setRadius(2.0);
coin.show();
coin.setValue(5);
}
}
透過 setRadius()、show() 函數,使子類別可以使用父類別中標示為 private 的 pi、radius
就算沒有寫程式,子類別也會自己呼叫父類別的建構子
7. 如果想要呼叫父類別中特定的建構子:在子類別的建構子中,加入 super(r),引數可改變
- 如果沒有特別呼叫,"沒有引數"的父類別建構子還是會印出
- super() 要寫在第一個敘述
- 如果子類別有建構子且沒有使用 super(),在父類別裡只有「有引數」的建構子,則會被認為編譯錯誤(因為子類別無法呼叫預設的「沒有引數」的父類別建構子)
可透過加上沒有任何敘述的建構子處理:public Circle(){}
8. this() 呼叫同一類別的不同建構子,super() 是由子類別呼叫父類別建構子
保護成員