Java介面特徵與細節
阿新 • • 發佈:2019-02-03
介面
- 書面定義:
Java介面是一系列方法的宣告,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
在java中不直接支援多繼承,因為會出現呼叫的不確定性。所以java將多繼承機制進行改良,在java中變成了多實現。
當一個抽象類裡面全部是抽象方法時,且與繼承類之間實現功能體現更強於所屬關係,就可以定義為介面interface,更趨近於體現功能的集合特點
介面的特徵:
對於介面當中常見的成員:而且這些成員都有固定的修飾符。
1.全域性常量: public static final
2.抽象方法:public abstract
所以介面中的成員都是公共的許可權.
3.只能由實現了介面的子類並覆蓋了介面中所有的抽象方法後,該子類才可以例項化。
否則,這個子類就是一個抽象類。介面是不能直接通過new來例項化的,沒有具體實現的介面例項化也沒有意義。
介面與普通類:
類與類之間是繼承的關係
類與介面之間是實現關係,而且類的單繼承可以有多實現(同時實現多個介面)
介面與介面之間是繼承關係,而且介面的繼承可以是多繼承
(因為介面的方法並沒有方法體,即便繼承也不用實現方法)
介面在OOP的特點體現:
1.是對外暴露的規則
2.是對程式的功能擴充套件
3.介面的出現降低了耦合性
關於介面與抽象類的區別請看
class Demo
{
void show()
{
System.out.println("父類方法");
}
}
interface Demo1
{
public static final int NUM = 1;
public abstract void method();
}
interface Demo2
{
double Circle_DIRECT = 2.45; //系統自動加上public static final
void method();//系統自動加上public abstract
int add(int a, int b);
}
class DemoImpl extends Demo implements Demo1,Demo2
{
public void method()
{
System.out.println("實現介面1,介面2");
//實現具體方法,同時了覆蓋兩個介面中的方法
}
public int add(int a,int b)
{
return a+b;
}//必須覆蓋所有實現介面的抽象方法,否則還是要定義為介面
}
public class InterfaceDemo
{
public static void main(String[] args)
{
DemoImpl d = new DemoImpl();
d.show();
d.method();
System.out.println(d.add(1,2));
System.out.println(d.NUM);
System.out.println(Demo1.NUM);
}
}