# 繼承 - 父類別 - 繼承使用`extends`,Java屬於單繼承 ```java= public class FuClass{ private int id; private String name; } ``` - 子類別 - 基本上都繼承Object - 繼承指定類別 ```java= public class SuClass extends FuClass{ } ``` - 屬性會被繼承 - 關於建構子的繼承 - 如果子類別建構子初始化,要實作父類別建構子。如果父類別有多個建構子,子類別只要挑選其中一個(除非有需要用到其他數值才做多個) - 補充:super有三種 - super - 針對class - super() - super... *** - 實際開發不太會直接運行空建構子 - 代碼塊建構子 ```java= //class下方 { //比建構子還先運行 } static{ //靜態形,順序最先,在他處new後只運行一次 } ``` - 實體化的過程是把某class提升到父類別的角色 ```java= public class AllClass { public void test01() { //一般類別的寫法 Student st = new Student(); getAll(st); //匿名類別的寫法 getAll(new Worker()); getAll(new Other()); } public void getAll(FuClass fu) { //判斷來自哪裡才能印出來 if (fu instanceof Student) { fu.eat(); fu.sleep(); //如果要用子類別的東西 Student st=(Student)fu; //強轉自訂型態 st.read(); } else if (fu instanceof Worker) { fu.eat(); fu.sleep(); Worker wr=(Worker)fu; wr.work(); } else if (fu instanceof Other) { fu.eat(); fu.sleep(); } else { fu.eat(); fu.sleep(); } } ``` - 使用時機如:新增欄位(假設以前的檔案已編譯) - 以不更動原檔案為原則 - `@Deprecated`過時備註 - [範例](/8V1P_vhvQzyEzRgLwRZAZA) - `@Override`可以覆寫父類別(右鍵Source中有快捷功能) - 抽象類別 抽象方法 - 抽象方法有方法頭無方法體 - 使用==抽象的關鍵字== - 抽象方法==只能==放置於抽象類別中 ```java= public abstract class Fuclass{//這是抽象類別 public abstract void method();//這是抽象方法 } ``` - 抽象方法需要繼承並需要實作 - Override - 可以用於連接多重資料庫 - 複習super用法 ```java= super.父類別中的方法(); ``` - 如果都不想全部實作父類別中的抽象方法,可以讓class本身也變抽象的 - new一個抽象類別不好使,只能用其中一個方法(跟匿名類別差不多) *** ## 屬性議題 ```java= private int x;//只有範圍內能用 int y; //僅繼承、物件可用 protected int z; //僅繼承、物件可用 public int a;//其他package也能看到 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up