1. 程式人生 > >Java抽象類和介面(二)

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("給學生考試");
}
}