接口
- 接口的基礎語法:
1.接口也是一種引用數據類型。
2.接口是完全抽象的。或者說接口是特殊的抽象類。
3.定義:
[修飾符列表] interface 接口名{
}
4.接口支持多繼承,一個接口可以繼承多個接口。
interface C extends A,B{
}
5.接口只包含常量(final,static)和抽象方法.
6.接口中的成員變量都隱含public,static,final屬性,方法隱含public,abstract屬性,可以省略不寫。
7.接口中的方法都是抽象方法,所以接口中的方法不能有方法體。
8.接口中的常量定義時一定要賦初值,且此值不能再更改。
- 類實現接口
類和類之間叫做繼承,類和接口之間叫做實現。可以將其理解爲“繼承”。
繼承使用extends關鍵字。
實現使用implements關鍵字。 - 當一個非抽象的類接口的話,需要將接口中所以的方法實現。重寫/覆蓋/實現 接口的方法權限不能降低,所以必須聲明public.
- 接口的多態
MyMath a = new MyMathPI//向上轉型,父類型的引用指向子類型的對象,運行時找的是類的類型。
接口必須通過類實現後才能使用,否則就僅僅是一個框架。 - 一個類可以同時實現多個接口,比如計算機可以實現多個接口。其實現了多繼承的功能,彌補了Java類單繼承的缺陷。
- 接口不同類之間沒有‘繼承’關係,向下轉型也編譯不會報錯,運行時會報錯。
- 繼承和實現都存在的話,代碼該怎麼寫?
extends在前implements在後。 - 一個非抽象的類,實現接口的時候,必須將接口中所有方法加以實現。
- 接口中方法不能有方法體。
- 接口在開發中用什麼作用?
接口在開發中的作用,類似於多態在開發中的作用。多態,面向抽象編程,不要面向具體編程,提高程序的擴展力。
例如寫一個養寵物系統。
接口在開發中的作用?
面向抽象編程:即面向接口編程。可插拔接口。如主板和內存條,usb接口,電腦與鍵盤…。擴展力好。
//實現顧客到店點餐系統,菜單作爲接口
/*接口的作用*/
public class Test1 {
public static void main(String[] args) {
Customer f=new Customer();
f.setName("jia");
Menu Cooker1=new ChineseCooker();//多態,向上轉型,創建中國廚師
f.setCc(Cooker1);
f.order();
Menu Cooker2 =new FranchCooker();//創建法國廚師
f.setCc(Cooker2);
f.order();
System.out.println(f.getName());
}
}
//接口
interface Menu {
int YuXiang();
int Pizza();
}
//顧客類
class Customer {
private String name;
private Menu cc;
//構造方法
public Customer() {
}
public Customer(String name, Menu cc) {
this.name = name;
this.cc = cc;
}
//封裝
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Menu getCc() {
return cc;
}
public void setCc(Menu cc) {
this.cc = cc;
}
// 點菜方法
public void order(){
Menu fm=this.getCc();//獲得菜單
fm.YuXiang();//廚師做菜
fm.Pizza();
}
}
//中國廚師實現菜單的中餐
class ChineseCooker implements Menu{
public int YuXiang(){
System.out.println("Chinese魚香肉絲!");
return 0;
}
public int Pizza(){
System.out.println("Chinese披薩!");
return 0;
}
}
//法國廚師實現菜單中的西餐
class FranchCooker implements Menu{
public int YuXiang(){
System.out.println("Franch魚香肉絲!");
return 0;
}
public int Pizza(){
System.out.println("Franch披薩!");
return 0;
}
}
一個java源文件,只能出現一個public類。
- 類型與類型之間的關係?
*
抽象類和接口有什麼區別?
語法上區別:
抽象類是半抽象的。
接口是完全抽象的。
抽象類中有構造方法
接口中沒有構造方法
接口和接口之間支持多繼承。
類和類直間只能單繼承。
一個類可以同時實現多個接口
一個抽象類只能繼承一個類。
接口只能出現常量和抽象方法。
接口使用的比抽象類多,一般都是對“行爲的抽象”。