---
# System prepended metadata

title: interface

---

# interface
- 只有抽象方法，沒有一般方法
    - 其實可以放靜態方法等
- 沒有變數只有常數
- 當抽象方法大於一個的時候，不適合建立實體
- 專案中某功能的最高或第二層父類別，可以透過方法的傳入進行實作方法
```java=
public class MainTest {

    //第一種寫法
	public void getInterface() {
	setInterface(new MyBtn() {

		@Override
		public void myClick() {
			// TODO Auto-generated method stub
			
		}

	});
    }
	
	private void setInterface(MyBtn myBtn) {
		// TODO Auto-generated method stub
		
	}
}

    //第二種寫法
    public void getInterface2(){
    getMethod01(new MyBtn(){
        //需要實作的方法
    });
    }
    public void getMethod(MyBtn m){
        m.method01();
    }
```
- `*.java`原則上為單繼承、多實作
    - 透過`implements+interface`實現多繼承的功能
- interface與interface之間是可以互相繼承的關係，並可多繼承；interface與class屬於後者實作前者的關係
- 沒有建構子