導航
1.接口語法與注意事項
2.接口支持多重繼承
3.類調用接口的語法
4.接口也是一種類,也可以產生對象,接口的多態性
5.適配器類
6.抽象類定義與用法
————————————————————————————————————————
1.接口語法與注意事項
接口的語法:
[abstract] interface 接口名 {
[public][abstract] 返回類型
方法名(參1,參2)
}
注意:
1.沒有方法體,static方法也不能用,默認是public 和 abstract
2.接口中無成員變量,無構造器,不能用接口創建對象
3.接口中的所有方法都是抽像方法,默認也是abstract
2.接口支持多重繼承
[abstract] interface 接口名 extends 接口1,接口2{
}
3.類調用接口的語法
class 類名 implements 接口1,接口2{
}
注意點:
1.類中必須實現接口中的所有方法,否則就會有編譯錯誤
2.繼承後方法的訪問修飾符必須強於父類中的方法修飾符,並且繼承類必須使用public修飾
例子:
//接口
interface IBiz{
void change();
boolean withdraw(double amount);
}
//父類
class ClsA{
}
//插入接口實現,不影響父類
class clsB extends ClsA implements IBiz{
public void change(){
}
public boolean withdraw(double amount){
}
}
例子來看,類調用接口時必須將接口中功能都實現
若想選取部分功能實現,就要使用抽象類 往下看把
應當有契約性與穩定性
4.接口也是一種類,也可以產生對象,接口的多態性
但是隻能使用自己接口中的方法,其他父類與接口方法隱藏
舉例:(能夠產生對象)
class clsA implements IBiz,IDao{
}
IBiz obiz = new clsA(); //只能調用自己接口的方法
舉例:接口的多態性
接口
interface IBiz{
void charge();
}
class ClsA implements IBiz{
public void change(){
對應實現的方法
}
}
class ClsB implements IBiz{
public void change(){
對應實現的方法
}
}
class ClsCall{
static public void call(IBiz biz){ //傳的是接口的參數
biz.charge(); //biz只能使用自己接口中的功能
}
}
改變不同的實現,不影響ClsCall
接着進行調用上面的
IBiz obiz = new ClsA();
ClsCall.call(obiz);
charge調用結果根據AB兩個都不同
5.適配器類
方法作用:
1.實現接口,並對接口中的接口方法提供空實現
2.空實現就是有方法體,但方法體中不提供有效的代碼
舉例子:
接口
interface IBiz{
void charge();
boolean withdraw(double amount)
}
適配器
class BizAdapter implements IBiz{
public void charge(){}
public boolean withdraw(double amount){
return false;
}
}
class Bizlmpl extends BizAdapter{
public void charge(){
實現
}
}
使用適配器有什麼好處呢?
創建一個類並且繼承這個繼承器,就可以使用其中的方法了,可以隨意調用幾個方法。
6.抽象類定義與用法
介於接口與類之間的概念
1.使用abstract修飾,並且其中的方法也要使用abstract修飾
2.可以有構造器,但是不能在new後使用抽象類構造器,也就是說抽象類不能創建對象
最主要就是使用抽象類調用接口時,就不需要實現所有接口的方法
舉例子:
接口
interface IBiz{
void charge();
boolean withdraw(double amount);
}
抽象類
abstract class ClsA implements IBiz{
public boolean withdraw(double amount){
}
}
抽象方法與其他成員方法與變量有關聯,使用抽象類否則使用接口
可以一起交流討論學習:qq羣891507813