物件導向實作課程(使用C#)上課心得

繼承

  • 繼承者可以擁有被繼承者的特性
  • Bill key point : 如果單純將繼承作為程式碼 reuse 那麼設計上要再想想

C# 繼承

public class Class1 : Class2{}

Java 繼承

public class Class1 extends Class2{}

無論是 C# 或是 Java 在宣告 class 時其實都隱含著繼承了 Object 這件事

example in java

Animal 抽象類別

public abstract class Animal {

    private int age = 0;
    private String name = "Animal";

    protected abstract void skill();

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0) this.age = age;
        else this.age = 0;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Cat 類別繼承於 Animal
基本上年齡與名稱這些都是動物的基本特性,Cat 也屬於一種 Animal 所以這些特性相同我們只需要繼承 Animal 但是不同 Animal 會有不同的技能所以可以由繼承者自己定義

public class Cat extends Animal{

    @Override
    protected void skill() {
        System.out.println("裝可愛");
    }
}