java接口示例_【基础篇】java-接口及其示例
接口
接口是對方法的封裝,它不是類,但也會編譯為.class文件。接口的關鍵字是interface,定義方式與類相似,是一種引用數據類型。接口不能創建對象,但可以被類使用(implements,類似于繼承),一個實現接口的類中,要實現接口所有的抽象方法,否則就是一個抽象類了。
public interface 接口名稱 {
// 抽象方法
// 默認方法
// 靜態方法
// 私有方法
}抽象方法
public interface InterFaceName {
public abstract void method();
}
使用abstract修飾的抽象方法,供子類實現使用。默認方法
使用 default 修飾,不可省略,供子類調用或者子類重寫。
public interface InterFaceName {
public default void method() {
// 執行語句
}
}靜態方法
使用 static 修飾,供接口直接調用,接口名.方法名()的方式直接調用,不能被子類實現。
public interface InterFaceName {
public static void method2() {
// 執行語句
}
}私有方法
使用 private 修飾,供接口中的默認方法或者靜態方法調用。
public interface InterFaceName {
private void method() {
// 執行語句
}
}類與接口的關系
類與接口的關系為實現關系,即類實現接口,用implements關鍵字。非抽象子類實現接口,必須重寫接口的所有抽象方法,而默認方法可以直接調用,也可以重寫。
class 類名 implements 接口名 {
// 重寫接口中抽象方法【必須】
// 重寫接口中默認方法【可選】
}私有方法的使用
私有方法:只有默認方法可以調用。
私有靜態方法:默認方法和靜態方法可以調用。接口的多實現
接口與繼承不同,是可以多實現的。就是一個類可以實現多個接口。
class 類名 [extends 父類名] implements 接口名1,接口名2,接口名3... {
// 重寫接口中抽象方法【必須】 // 重寫接口中默認方法【不重名時可選】}
當實現多個接口時,對于抽象方法,必須全部重寫,如果抽象方法重名,只需重寫一次即可。這是因為重寫是對方法的覆蓋,以最新的為準。
對于默認方法,實現類都可以使用,如果有重名,必須重寫一次,因為不重寫會混亂。
注意,默認方法有個優先級問題,如果默認方法與實現類的父類成員方法重名,會以父類的成員方法為較高優先級。
對于靜態方法,類不能實現靜態方法,所以即使重名也不受影響。接口也可以繼承
接口是可以實現繼承的,也是用extends關鍵字,不過接口可以實現多繼承,當然,接口只能繼承接口,類型要保持一致。接口注意事項
-接口中,無法定義成員變量,但是可以定義常量,其值不可以改變,默認使用 public static final修飾。
-接口中,沒有構造方法,不能創建對象。
-接口中,沒有靜態代碼塊。
接口實現案例案例需求
筆記本電腦( laptop)通常具備使用USB設備的功能。在生產時,筆記本都預留了可以插入USB設備的USB接口,
但具體是什么USB設備,筆記本廠商并不關心,只要符合USB規格的設備都可以。
定義USB接口,具備最基本的開啟功能和關閉功能。鼠標和鍵盤要想能在電腦上使用,那么鼠標和鍵盤也必須遵守
USB規范,實現USB接口,否則鼠標和鍵盤的生產出來也無法使用。案例分析
-USB接口,包含開啟和關閉功能;
-筆記本類,包含運行、關機功能,使用usb設備功能;
-鼠標類,實現usb接口,具備點擊方法
-鍵盤類,實現USB接口,具備敲擊方法案例實現
-定義USB接口
interface USB{
void open();
void close();
}
-定義鼠標類
class Mouse implements USB{
public void open(){
System.out.println("鼠標開啟");
}
public void close(){
System.out.println("鼠標關閉");
}
public void click(){
System.out.println("鼠標單機");
}
}
-定義鍵盤類
class KeyBoard implements USB{
public void open(){
System.out.println("鍵盤開啟");
}
public void close(){
System.out.println("鍵盤關閉");
}
public void type(){
System.out.println("鍵盤敲擊");
}
}
-定義筆記本類
class Laptop{
public void run(){
System.out.println("筆記本運行");
}
public void useUSB(USB usb){
if(usb != null){
usb.open();
if(usb instanceof Mouse){
Mouse m = (Mouse) usb;
m.click();
}else if (usb instanceof KeyBoard){
KeyBoard kb = (KeyBoard)usb;
kb.type();
}
usb.close();
}
}
public void shutDown(){
System.out.println("筆記本關閉");
}
}
-編寫測試類
public class Test{
public static void main(String[] args){
Labtop lt = new Laptop();
lt.run();
USB u1 = new Mouse();
lt.useUSB(u1);
USB u2 = new KeyBoard();
lt.useUSB(u2);
lt.shutDown();
}
}
這里以多態的方式實現對usb設備的創建,類型都是接口類型的usb,因為接口也是一種引用類型,這是符合規定的,并不是接口生成了對象,而是接口類型變量,指向了Mouse和KeyBoard對象,在調用筆記本對象的方法,判斷二者對應設備類型,并做對應操作。
這個示例是接口與多態的實操案例。
總結
以上是生活随笔為你收集整理的java接口示例_【基础篇】java-接口及其示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gitlab mysql 表_gitla
- 下一篇: extends thread java_