abstract 由abstract關鍵字修飾的類稱為抽象類,可以將某些類共有的行為抽象出來,形成約束,提高開發效率。 //抽象類 public abstract class Action{ //抽象方法,只有方法名字,沒有方法的實現 public abstract void doSth(); } ...
abstract
由abstract關鍵字修飾的類稱為抽象類,可以將某些類共有的行為抽象出來,形成約束,提高開發效率。
//抽象類
public abstract class Action{
//抽象方法,只有方法名字,沒有方法的實現
public abstract void doSth();
}
- 抽象類不可以通過new關鍵字創建實例
- 抽象類中可以有普通方法
- 抽象方法必須在抽象類中
- 抽象類可以有構造方法,但只在子類創建實例時調用
interface
使用interface 創建 的類稱為介面。
在普通類中只有具體實現;抽象類中,具體實現和規範(抽象方法)都有;而在介面中只有規範,沒有具體實現,將約束和實現分離。
介面中定義的屬性預設都被final修飾的靜態屬性,且訪問限製為public
介面中定義的方法預設是抽象的,且訪問限製為public
interface UserService{
//public 和 final static是多餘的
public final static int num = 1001;
//public 和 abstract是多餘的,在interface中,不需要額外聲明訪問限制和抽象類,預設都是public和abtract
public abstract void run(String name);
interface TimerService{
void add(int t);
//這不是普通的方法,這實際上是為該方法定義了預設行為,該方法可以被正常重寫,訪問限制也預設是public。
//實現該介面的類可以選擇不重寫該方法,可以直接調用
default void saySth(Stirng words){
System.out.println("Saying "+words);
}
}
介面需要有實現類,一個類想要實現一個介面,需要通過implement關鍵字。一旦實現了某個介面,就必須實現介面中的方法。一個類可以同時實現多個介面。
class UserServiceImpl implements UserService,TimerSerice{
//UserServiceImpl類實現了兩個介面,就必須同時實現這兩個介面中的方法
public void run(String name){
System.out.println(name);
}
public void run(int t){
//該方法沒有被實現,但可以直接調用
saySth("Hello");
System.out.println(t);
}
}