介面:在雜戲團的貓和狗除了吃和睡貓狗還可以算數,而貓和狗本身不具備計算這種特殊能力,
但是可以通過訓練得到。這種特殊的能力定義在動物類中不合適,也不適合定義到貓狗類
中,因為只有部分貓狗具備這種功能。所以為了體現這種擴展性,java提供了介面來定義
這些額外的功能,并不給出具體的實作,將來那些貓狗需要被培訓,只需要這部分貓狗把
這種額外的功能實作即可。
介面的特點:
1、介面用關鍵字interface修飾
格式:interface 介面名{
//...
}
2、類實作介面用implements表示
格式:class 類名 implements 介面名{
//...
}
3、介面并不是實際意義上的一個類,它僅僅表示功能的擴展
4、介面不能實體化,但是可以使用多型的方式進行實體化
例:interface A{
public abstract void method();
}
class B implements A{
public abstract void method(){
System.out.println(“method”);
}
}
class Demo{
public static void main(String[] args){
A a = new B();//向上轉型
a.method();//輸出結果:method
}
}
5、介面的子類
A、抽象類
B、具體類 - 需要實作(重寫)介面中的所有方法
成員:
成員變數:只能是常量,并且是靜態的。默認修飾符(如果沒有系統會默認補全):public
static final
構造方法:介面沒有構造方法 - 所以介面不能被實體化
成員方法:只能是抽象方法。默認修飾符:public abstract
普通類,抽象類和介面的區別:
1、成員區別:
普通類:
成員變數:可以是變數,也可以是常量
構造方法:無參構造器,帶參構造器
成員方法:只能是非抽象的
抽象類:
成員變數:可以是變數,也可以是常量
構造方法:無參構造器,帶參構造器
成員方法:可以是抽象的,也可以是非抽象的
介面:
成員變數:只能是常量,并且是靜態的
構造方法:沒有
成員方法:只能是抽象的,并且是public修飾(公共的)
2、關系區別:
1、類于類(包括抽象類):繼承關系,只能單繼承,可以多層繼承
例:class A{
}
class B extends A{
}
class C extends B{
}
2、類與介面(包括抽象類):實作關系,可以單實作,也可以多實作(需
要實作所有介面中的方法),當然也可以在繼承一個類的情況下實
現單個或多個介面
例:interface A{
public abstract void method1();
}
interface B{
public abstract void method2();
}
//實作了A,B兩個介面,所以要實作A和B介面的所有方法
class C implements A,B{
public abstract void method1(){
}
public abstract void method2(){
}
}
3、介面與介面:繼承關系,可以單繼承,也可以多繼承
例:interface A{
public abstract void method1();
}
interface B{
public abstract void method2();
}
//單繼承
interface C extends A{
}
//多繼承
interface D extends A,B{
}
3、設計理念的區別:
類(包括抽象類):被繼承體現的是"is...a"的關系。類或者抽象類中
定義的是該繼承體系的共性功能
介面:被實作體現的是"like...a"的關系。介面定義的是該繼承體系
的擴展功能
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283484.html
標籤:非技術區
