---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
接口
格式:interface 接口名 {}
接口中的成員修飾符是固定的。
成員常量:publicstatic final
接口裏面定義變量是全局常量,而且上面三個關鍵字都可以省略。
成員函數:publicabstract
接口裏面定義的方法都是抽象的,而且上面的兩個關鍵字也是可以省略的。
發現接口中的成員都是public的。
接口的出現將“多繼承”通過另一種形式體現出來,即“多實現”。
接口的特點:
接口是對外暴露的規則。
接口是程序的功能擴展。
接口的出現降低耦合性。
接口可以用來多實現。
類與接口之間是實現關係,而且類可以繼承一個類的同時實現多個接口。
接口與接口之間可以有繼承關係。
如:
public interface I {
method1(){};
}
class A implements I {
method1() {
somefunction......
}
}
接口於抽象類的區別:
共 性: |
都是不斷抽取出來的抽象的概念 |
區別 1: |
抽象類體現繼承關係,一個類只能單繼承 接口體現實現關係,一個類可以多實現 |
區別 2: |
抽象類是繼承,是 "is a "關係 接口是實現,是 "like a"關係 |
區別 3: |
抽象類中可以定義非抽象方法,供子類直接使用 接口的方法都是抽象,接口中的成員都有固定修飾符 |
程序中的提現:父類或者接口的引用指向或者接收自己的子類對象。
好處和作用:多態的存在提高了程序的擴展性和後期可維護性
多態三個必要條件:
父類引用指向子類對象
要有覆蓋操作,也就是重寫
需要存在繼承或者實現關係
1、多態的體現:
父類的引用指向了自己的子類對象。
父類的引用也可以接收自己的子類對象。
2、多態的前提:
必須是類與類之間有關係。要麼繼承,要麼實現。
通常還有一個前提:存在覆蓋。
3、多態的好處:
多態的出現大大的提高程序的擴展性。
4、多態的弊端:
提高了擴展性,但是隻能使用父類的引用訪問父類中的成員。
在多態中成員函數的特點:
在編譯時期:參閱引用型變量所屬的類中是否有調用的方法。如果有,編譯通過,如果沒有編譯失敗。
在運行時期:參閱對象所屬的類中是否有調用的方法。
簡單總結就是:成員函數在多態調用時,編譯看左邊,運行看右邊。
在多態中,成員變量的特點:無論編譯和運行,都參考左邊(引用型變量所屬的類)。
在多態中,靜態成員函數的特點:無論編譯和運行,都參考做左邊。
內部類:
將一個類定義在另一個類的裏面,對裏面那個類就稱爲內部類(內置類,嵌套類)。
訪問特點:
內部類可以直接訪問外部類中的成員,包括私有成員。是因爲內部類中持有了一個外部類的引用,格式外部類名.this。而外部類要 訪問內部類中的成員必須要建立內部類的對象。
訪問格式:
1、當內部類定義在外部類的成員位置上,而且非私有,可以在外部其他類中。可以直接建立內部類對象。
格式:
外部類名.內部類名 變量名 = 外部類對象.內部類對象;
Outer.Inner in = new Outer().new Inner();
2、當內部類在成員位置上,就可以被成員修飾符所修飾。
如:private:將內部類在外部類中進行封裝。
static:內部類就具備static的特性。
當內部類被static修飾後,只能直接訪問外部類中的static成員。出現了訪問侷限。
在外部其他類中,如何直接訪問static內部類的非靜態成員呢?
new Outer.Inner().function();
在外部其他類中,如何直接訪問static內部類的靜態成員呢?
uter.Inner.function();
注意:當內部類中定義了靜態成員,該內部類必須是static的。
當外部類中的靜態方法訪問內部類時,內部類也必須是static的。
當描述事物時,事物的內部還有事物,該事物用內部類來描述。因爲內部事務在使用外部事物的內容。
如果一個類繼承內部類,則創建該類的對象時需提供一個外部類的對象作爲構造方法的參數。如:
class Car{
classWheel{ }
}
classSuperWheel extends Car.Wheel{
SuperWheel(Carcar){
car.super();
}
publicstatic void main(String [] args){
Carcar = new Car();
SuperWheelwl = new SuperWheel(car);
}
}
匿名內部類:
1、匿名內部類其實就是內部類的簡寫格式。
2、定義匿名內部類的前提:內部類必須是繼承一個類或者實現接口。
3、匿名內部類的格式: new 父類或者接口(){定義子類的內容}
4、其實匿名內部類就是一個匿名子類對象。而且這個對象有點胖。可以理解爲帶內容的對象。
5、匿名內部類中定義的方法最好不要超過3個。
如:
classConstant{
intn;
Constant(inti){
n=i;
}
}
publicclassThing{
ConstantgetConstant(){
returnnew Constant(5){
intn=5;
};
}
public static voidmain(String[]args){
Thingth=newThing();
System.out.println(th.getConstant().n);;
}
}
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------