java三大特性如題。
封裝:封裝就是將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。
封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過 外部接口,一特定的訪問權限來使用類的成員。
繼承:子類對父類的繼承,若子類與父類在同一包中。子類繼承了父類中所有不是private的成員方法(除構造方法)及不是private的成員變量。
注:子類不繼承父類的構造方法。
成員變量:包括實例變量與類變量(用static修飾,亦稱為靜態變量))。
成員方法:包括實例方法與類方法(即靜態方法)。
重寫:當子類對繼承來的方法進行新方法體的構建的時候,這個過程成為重寫。即發生在子類與父類之 間。 屬于面向對象的特性。方法名及參數都不能修改。
super: 當父類中的方法或變量被重寫后,父類中的該方法或變量將被隱藏。如果想要在子類中使用被子類隱藏的成員變量或方法就可以使用關鍵字super。由于子類不繼承父類的構造方法,故想使用父類的構造方法,也要用到super(在子類構造方法第一句中寫入super())。
重載:同一個方法名,通過不同的參數數量或參數類型設置,構建不同的方法體的過程。發生在同一類中,不是面向對象過程。
注:構造函數可以重載,但不能重寫(在子類中只能用super()獲取,否則用不到哦~)。
多態:父類的某個方法被其子類重寫時,可以各自產生自己的功能行為。
子類使用父類的方法:如果該方法已被重寫(隱藏),那么要用super.f()。否則只要不是private方法不用super,可直接調用。那private方法如何調用呢:
創建一個下轉型對象:(此對象為父類的一個對像,可使用父類的所有方法)
子類 hehe;
hehe=new(子類)父類();//注意括號,里面寫子類,這是強制轉型。
hehe.f();
父類調用子類的方法:創建一個上轉型對象:
父類 haha;
haha=new 子類();
haha.f();
haha=new 子類2();
haha.f();
即為調用了兩個子類分別重寫的方法。
對上轉型對象的說明:
class Human{
public void drink(){System.out.println("Human");}
}
class YongMan extends Human{
public void drink(){System.out.println("YongMan");}}
}
public class Test{
public static void main(String arge[]){
Human e2=new YongMan();
e2.drink();
}
}
以上面這個程序為例子
Human e2=new YongMan();
這句其實是指父類對象e2是子類YongMan對象的上轉型對象
上轉型對象不能操作子類新增的成員變量(失掉了這部分屬性);不能使用子類新增的方法(失掉了一些功能)。
上轉型對象可以操作子類繼承或者隱藏的成員變量,也可以使用子類繼承的或者重寫的方法。上轉型對象操作子類繼承或重寫的方法,其作用等價于子類對象去調用這些方法。因此,如果子類重寫了父類的某個方法,則當對象的上轉型對象調用這個方法時一定是調用了這個重寫的方法
上面的YongMan 類中的drink()方法 重寫了父類的方法
所以最后的輸出結果是YongMan
類:是對象的模板,只是定義了一類東西,而對其中的變量和方法不能具體操作(除靜態的),即只能操作類變量和類方法,而不能操作實例變量與實例方法。當new 出一個對象后,有了實例,分配了空間,就可以操作類中定義的所有變量和方法了。
對象:對類的實例化。當聲明并新建一個對象時,系統會做兩件事:
如:renwu zhubajie;
zhubajie=new renwu();
一、為類中各個變量height、head、ear、weight等分配內存,指定初始值。并執行構造方法renwu()。
二、給出一個信息,說明這些分配好內存的變量是屬于對象zhubajie的,及它們將由zhubajie來管理。此處zhubajie=new renwu()中的zhubajie充當了引用的角色。由它就可以操作這些變量及有關方法了。