Java抽象類和介面(二)
***************************介面*********************************
一.why
需求一直不變的時候可以不使用介面, 需求經常發生改變推薦使用介面...
軟體產品中需求會經常改變,所以一般都要使用介面...
體現了可維護、可擴充套件的優點
二.什麼是介面
一組規範的集合(包含屬性規範、行為規範),用的最多的是行為規範..
USB插槽(實現) != 介面(規範、看不見摸不著的)
網路中的協議也是規範,相當於介面...
三.how 如何定義介面
使用關鍵字 interface
public interface 介面名 {
//屬性
//方法
}
注意:
1. 介面中的方法都是 抽象方法
public abstract
即使程式設計師 沒有寫 public 或 abstract 編譯器編譯的時候也會幫你補全這兩個關鍵字
public interface Teacher{
void teach();
}
2. 介面中的屬性都是 public static final的
即使程式設計師不寫這幾個關鍵字 編譯器也會幫你補全
都是靜態常量
演示程式碼:
Teacher.java
package com.chapter9.演示介面;
public interface Teacher {
//1.屬性
public static final String TARGET = "teach";
//2.行為
public void teach();
public void dianMing();
}
JavaTeacher.java
package com.chapter9.演示介面;
//實現類
//實現介面要實現介面的所有方法
public class JavaTeacher implements Teacher{
@Override
public void teach() {
System.out.println("我在講java");
}
@Override
public void dianMing() {
System.out.println("我在點名");
}
public static void main(String[] args) {
Teacher jt = new JavaTeacher();
jt.teach();
}
}
***************************介面的若干知識點*********************************
1. java這門語言是單繼承, 為了模擬多重繼承,可以使用介面,一個類可以實現多個介面來模擬多重繼承
舉例: JavaTeacher 既可以實現Teacher這個介面 又可以實現程式設計師這個介面
2. 介面可以擴充套件介面嗎?
可以. 介面可以擴充套件 多個介面
舉例: 高階廚師(規範)
1. 廚師(規範)
2. ArtMan(規範)
3. HealthMan(規範)
多個小的規範組成一個大的規範,介面可以擴充套件多個介面
3. 介面可以實現介面嗎???
不可以. 因為 實現介面 要實現介面的所有抽象方法, 實現了抽象方法以後 該類
就帶有已經實現的方法了,就不能再定義成介面了...
***************************JDK8關於介面的新特性: 帶有實現的類方法和預設方法*********************************
介面中的方法都是抽象方法
public interface Teacher {
//1.屬性
public String TARGET = "teach";
//2.行為
public void teach();
//帶有實現的類方法
public static void dianMing(){
System.out.println("我在點名");
}
//預設方法
default public void exam(){
System.out.println("給學生考試");
}
}