1. 程式人生 > 其它 >Java中介面的概述及特點

Java中介面的概述及特點

1.介面的概述及特點

* A:介面概述

* 從狹義的角度講就是指java中的interface

* 從廣義的角度講對外提供規則的都是介面

* B:介面的特點

* 介面用關鍵字interface表示

* interface 介面名{}

* 類實現介面用implements 介面名{}

* class 類名implemts介面名{}

* 介面不能例項化

* 那麼,介面如何例項化呢?

* 按照多型的方式例項化。

* 介面的子類

* a:可以是抽象類,但是意義不大

* b:可以是具體類,但要重寫介面中所有的抽象方法,(推薦方案)

* C: 案例演示

* 介面的特點

程式碼:

public class Demo09_polymorphic {

public static void main(String[] args) {
//Cannot instantiate the type Inter
//Inter i = new Inter();//介面不能例項化因為呼叫抽象方法沒有意義
//按照多型的方式例項化。
Inter i = new Demo1(); // 相當於是多型,(父類引用指向子類物件)
i.print(); //編譯看左邊,執行看右邊 成員方法

}
}

// interface 介面名 {} 建立介面的方法
interface Inter {
public abstract void print(); //介面中的方法都是抽象的

}

//b:可以是具體類,但要重寫介面中所有的抽象方法,(推薦方案)
// 繼承用extends 介面實現用implements
class Demo1 implements Inter {
@Override
// 重寫介面print()的方法
public void print() {
System.out.println("printDemo");
}
}

2介面的成員特點

A:介面成員特點

* 成員變數:只能是常量,並且是靜態的並公共的。

* 預設修飾符:public static final---這三個單詞麼有順序

* 建議:自己手動給出

* 構造方法:介面沒有構造方法。

* 成員方法:只能是抽象方法。

* 預設修飾符:public abstract

* 建議:自己手動給出。

* B:案例演示

* 介面成員特點


程式碼:

public class Demo6_Interface {
public static void main(String[] args) {
InterSec interSec = new DemoSec(); // 父類引用指向子類的物件
interSec.print();

}
}

interface InterSec {
//預設修飾符:public static final
public static final int num = 10; // 只能是常量 開發中建議這樣寫

//public Inter() {}//介面沒有構造方法。Interfaces cannot have constructors
//只能是抽象方法。
/*public void print() {//Abstract methods do not specify a body
System.out.println("print");
}*/
public abstract void print(); // 抽象方法
}

class DemoSec implements InterSec { //

public void print() { // 重寫抽象方法

System.out.println(num);
}
}

3.類與類、類與介面、介面與介面之間的關係

A:類與類,類與介面,介面與介面的關係

* a:類與類:

* 繼承關係,只能單繼承,可以多層繼承

* b:類與介面

* 實現關係,可以單實現,也可以多實現。

* 並且還可以在繼承一個類的同時實現多個介面。

* c: 介面與介面:

* 繼承關係,可以單繼承,也可以多繼承。

程式碼:
public class Demo7_interface {
public static void main(String[] args) {
DemoA demoA = new DemoA();
demoA.printA();
demoA.printB();
demoA.printC();
}
}


// 第一個介面
interface InterA {
public abstract void printA(); // 抽象的方法A
}

// 第二個介面
interface InterB {
public abstract void printB(); // 抽象的方法B
}

//c: 介面與介面:
interface InterC extends InterA, InterB { //可以多繼承。
public abstract void printC();
}


//class Demo implements InterA,implements InterB{
//b:類與介面
class DemoA extends Object implements InterA, InterB, InterC {
// 重寫介面InterA的方法
@Override
public void printA() {

System.out.println("InterA");
}

// 重寫介面InterB的方法
@Override
public void printB() {

System.out.println("InterB");
}

// 重寫介面InterC的方法
@Override
public void printC() {
System.out.println("InterC");
}

}

4.抽象類與介面的區別

*A:成員區別

* 抽象類:

* 成員變數:可以變數,也可以常量

* 構造方法: 有

* 成員方法:可以抽象,也可以非抽象

* 介面:

* 成員變數:只可以常量

* 成員方法:只可以抽象

* B:關係區別

* 類與類

* 繼承,單繼承

* 類與介面

* 實現,單實現,多實現

* 介面與介面

* 繼承,單繼承,多繼承

* C:設計理念區別

* 抽象類 被繼承體現的是:“is a "關係,抽象類中定義的是該繼承體系的共性功能

* 介面 被實現體現的是“is like" 的關係,介面中定義的是該繼承體系的擴充套件功能