目錄
一、前言
二、介面
介面的格式
三、介面的特點
介面的使用
四、類與介面的關系
介面多重繼承的好處
一、前言
前面我們說了抽象類的概述,我們對抽象類也有個認識和理解了,現在我們學習
十分重要的內容介面,介面這個詞比較的抽象,但其實也是十分好理解的,
二、介面
簡單的說,介面就是一種被規范的標準,只要符合這個標準都可以通用,介面的表現
在于對行為的抽象, 就好比插座,每個廠商生產的插座我們都可以用,這是因為他們
有同一個標準,這里插座就是介面,
介面的格式
格式1:
public interface 介面名
格式2:
interface 介面名
三、介面的特點
①多型的實體化用implement關鍵字
public interface usb{}//定義一個介面
public class computer implements usb{}//創建一個類實作介面
②介面不能被直接實體化,可以通過多型的形式實作實體化
usb u =new computer();
③介面中都是抽象方法和常量,不可能有非抽象方法,常量必須被賦值,
常量默認被public static final
方法默認被public static abstractl修飾
public final int num1=10;√
num1=20;×
int num2=10;√
num2=20;×
上面兩個正確的寫法等價
public abstract void method1();√
void method2();√
直接int num=10,創建的a是常量
④多型的前提:
- 有繼承或實作關系
- 有方法的重寫,
- 有父類或父介面參考指向子類或實作類物件
⑤介面的實作類
必須重寫介面中的所有方法,不想重寫則可以是抽象類(加上abstract)
但是子類繼承了該抽象類必須重寫介面中的方法,
⑥介面只能被public修飾
介面的使用
service包下
package service;
public interface EatService {
void eat();
}
service包下的impl包下
package service.impl;
import service.EatService;
public class CatImpl implements EatService {
@Override
public void eat() {
System.out.println("🐱吃🐟");
}
}
在controller包下
package controller;
import service.EatService;
import service.impl.CatImpl;
public class CatController {
public static void main(String[] args) {
EatService e=new CatImpl();
e.eat();
}
}
四、類與介面的關系
- 類和類之間是繼承關系
- 介面和介面之間是繼承關系
- 類和介面之間是實作關系(類實作介面)
類只支持單繼承(即一個子類只有一個父類),可以實作多個類
public class A extends B implements C,B,D....{}
介面之間可以多重繼承,
public interface a implements b,c,d.....{}
介面多重繼承的好處
定義了許多介面,如果一個設備要同時實作那么多介面將是不小的開銷,對于同能
同類的可以把他用一個介面繼承起來,這樣這個介面就要了那些介面的全部功能,我們
使用類只要實作一個就可以了,
介面1
package service;
public interface EatService {
void eat();
}
介面2
package service;
public interface PlayService {
void play();
}
介面3
package service;
public interface SleepService {
void sleep();
}
總介面:用來繼承上面三個介面
package service;
public interface SumService extends SleepService,EatService,PlayService {
}
此時原來的類實作只要實作一個總介面即可
舊:
public class CatImpl implements EatService,PlayService,SleepService {
//方法重寫
}
新:
public class CatImpl implements SumService {
//方法重寫
}
在controller中呼叫也是簡單不少
package controller;
import service.SumService;
import service.impl.CatImpl;
public class CatController {
public static void main(String[] args) {
SumService ss=new CatImpl();
ss.eat();
ss.play();
ss.sleep();
}
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/342194.html
標籤:java
上一篇:[Java設計模式] 圖文代碼案例詳解Java五大創建者模式 建造者、原型、(抽象)工廠、單例模式
下一篇:槃星—第4天任務—動態令牌
