Java面向對象系列(14)- 接口的定義與實現
- 2021 年 9 月 24 日
- 筆記
- Java面向對象, 測試開發 - Java
接口
- 普通類:只有具體實現
- 抽象類:具體實現和規範(抽象方法)都有
- 接口:只有規範!約束和實現分離
- 接口就是規範,定義的是一組規則,體現了現實世界中「如果你是…則必須能…」的思想。如果你是天使,則必須能飛。如果你是汽車,則必須能跑。如果你是好人,則必須幹掉壞人。
- 接口的本質是契約,就像我們人間的法律一樣。制定好後大家都遵守。
- OO的精髓,是對對象的抽象,最能體現這一點的就是接口。為什麼我們討論設計模式都只針對具備了抽象能力的語言(比如c++、java、c#等),就是因為設計模式所研究的,實際上就是如何合理的去抽象
- 聲明類的關鍵字是class,聲明接口的關鍵字是interface
接口一
package oop.demo09; //interface 接口 public interface UserService { //常量:接口中定義的參數都是常量:public static final public static final int age = 99; //只保留常量類型,常量名和值即可 double score = 99.5; //接口中所有的方法定義都是抽象的即 public abstract public abstract void go(); //public abstract直接去掉,方法保留返回類型和方法名,以及參數(如果有的話) void run(String name); void add(String name); void delete(String name); void update(String name); void query(String name); }
接口二
package oop.demo09; public interface TimeService { void time(); }
實現接口的類
package oop.demo09; //實現接口的類命名,一般命名為接口+Imp,即UserServiceImp //通過implments關鍵字來繼承(實現)接口的類 //實現接口的類,需要重寫接口中的方法 //利用接口實現多繼承 public class UserServiceImp implements UserService,TimeService { @Override public void go() { } @Override public void run(String name) { } @Override public void add(String name) { } @Override public void delete(String name) { } @Override public void update(String name) { } @Override public void query(String name) { } @Override public void time() { } }
總結
- 接口就是一個約束,定義了一些方法,讓不同的人去實現它
- 定義接口類使用關鍵字interface
- 接口類不能被實例化,接口中沒有構造方法,只有方法名,構造方法有繼承(實現)接口的類去實現
- 接口類中方法的定義都是抽象的,即public abstratc。只需要保留方法的返回類型+方法名+(參數)
- 接口類中定義的參數都是常量,即public static final。只需要保留常量的類型+常量名+常量值
- 繼承(實現)接口類使用關鍵字implements,繼承多個接口用逗號分隔
- 繼承(實現)接口類,必須重寫接口中的方法
- implements可以實現多個接口