[toc] https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html # Abstract 被abstract修飾的class無法直接被實例化, 但可以被繼承。 內可含abstract methods 如果有個子類別繼承某個abstract methods 子類別通常會實作所有父類別的abstract methods, 如果沒有, 子類別也需是`abstract` ```java abstract class Printer { abstract void print(String s); public void TestOutput() { print("testing printer..."); } } class TypeA extends Printer { @Override public void print(String s) { System.out.println("[A] " + s); } } public class Main { public static void main(String[] args){ Printer p = new TypeA(); p.print("hello"); // [A] hello p.TestOutput(); // [A] testing printer... } } ``` # Abstract vs Interface **什麼時候用什麼?** - Abstract Class - 你的父子類別通常很有關係. - 你希望有些成員不是`public` - 你想宣告non-static或是non-final fields - Interface - 你的interface與class可以關係不大, 如 "能飛的" -> "飛機", "鳥" - 你想指定某個class的行為, 但不在乎他是怎麼實作的 - 你想使用多重implement
×
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