Java開發精華總結(第三章)


目錄

對象

方法

構造方法

成員變量和局部變量

訪問修飾符

this關鍵字

super關鍵字


 


類是模子,是確定對象將會擁有的特徵和行爲(屬性和方法),類的組成就是屬性和方法。

所有的Java程序都以類(Class)爲組織單元。

 

定義Java中的類

定義Java中的一個類首先要定義類名,public class 類名,一個大括號開始一個大括號結束,class是聲明類的關鍵字;

類名定義完後要開始編寫類的屬性,對象有什麼是通過屬性來標識的,把屬性定義在類裏面(大括號內)。定義屬性的時候首先要指定屬性的類型,然後指定屬性名字,一個類當中我們可以寫一個或者多個屬性,也可以不定義屬性;

最後一步是編寫類的方法,方法是用來修飾可以做什麼,也是定義在大括號內部,我們可以定義一個方法,也可以定義多個方法,也可以不定義方法。

 

內部類

內部類就是定義在一個類裏面的類,包含內部類的類被稱爲外部類。

內部類的主要作用:提供了更好的封裝,可以把內部類隱藏在外部類之中,不允許同一包中的其他類訪問該類;內部類的方法可以直接訪問外部類的所有數據,包括私有數據;內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便。

內部類與外部類的區別:一個類是外部類的時候只能被public或者默認訪問修飾符所修飾,但是一個類如果是內部類,則可以被所有訪問修飾符所修飾。因爲一個類作爲內部類的時候,就只是作爲外部類的一個成員屬性了,因此可以使用訪問修飾符。

 

成員內部類

成員內部類是最常見的內部類,也叫做普通內部類。

成員內部類的使用方法:

Inner類定義在Outer類的內部,相當於Outer類的一個成員變量的地位,Inner類可以使用任意訪問控制符,例如public、protected、private等;Inner類中定義的方法可以直接訪問Outer類中的數據,不受訪問控制符的影響,例如直接訪問Outer類中的私有屬性;定義了成員內部類後,必須使用外部類對象來創建內部類對象,不能直接去new一個內部類對象。

    內部類 對象名 = 外部類對象.new 內部類();

編譯一個含有內部類的程序後會產生兩個.class文件,一個是外部類的.class文件,一個是內部類的.class文件,即成員內部類的.class文件總是這樣:

外部類名$內部類名.class

內部類可以直接使用外部類的屬性和方法,但是外部類卻不可以直接使用內部類的屬性和方法。如果想要調用內部類的屬性和方法可以先創建內部類的對象,然後通過內部類的對象來訪問其成員變量和方法;如果外部類和內部類具有相同的成員變量和方法,內部類默認訪問自己的成員變量或方法,如果要訪問外部類的成員變量,可以使用this關鍵字。

 

靜態內部類

靜態內部類是用static關鍵字修飾的內部類。

靜態內部類的特點:

靜態內部類不能直接訪問外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問;如果外部類的靜態成員與內部類的成員名稱相同,可通過 類名.靜態成員 訪問外部類的靜態成員;如果外部類的靜態成員與內部類的成員名稱不相同,則可通過 成員名 直接調用外部類的靜態成員;

創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名=new 內部類()

 

方法內部類

方法內部類就是內部類定義在外部類的方法中,方法內部類只在該方法的內部可見,即只在該方法內可以使用。

方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和static修飾符。

 

 

對象


對象的使用:首先是創建對象,然後通過對象名來使用這個對象。

創建對象我們通過 類名 對象名 = new 類名();我們就可以把一個類實例化變成一個對象。

類通過代碼形式保存在文件當中,當我們把文件的信息放到內存當中,這些信息的集合我們就把它們稱爲對象,這個過程我們稱之爲實例化

new 類名();就是對一個對象進行了實例化,最終得到了這個對象。只不過我們把對象賦給了對象名這個變量,我們對對象名操作其實就相當於對這個對象進行操作。

通過我們的 對象名.屬性(引用對象的屬性) 就可以使用我們對象的屬性,並且給我們對象的屬性賦值;只需要通過 對象名.方法(引用對象的方法)就可以調用對象的方法。

 

 

方法


方法是一個功能模塊,是用來解決一類問題的代碼中的有序組合。

方法的訪問修飾符是方法允許被訪問的範圍權限,有public、friendly、protected和private四種,其中public表示修飾方法可以被其他任何代碼處調用。

一個方法如果不返回任何值,則返回值類型指定爲void;如果方法具有返回值,則需要指定返回值的類型,並且在方法體中使用return語句返回值。

定義方法的名字必須使用合法的標識符。

傳遞給方法的參數列表,參數可以有多個,多個參數間以逗號隔開,每個參數由參數類型和參數名組成,以空格隔開。根據方法是否帶參是否帶返回值可以將方法分爲無參無返回值方法無參帶返回值方法帶參無返回值方法帶參帶返回值方法

 

1.無參無返回值方法

當一個方法沒有參數也沒有返回值,我們稱這樣的方法叫無參無返回值方法。使用方法需要定義方法和調用方法。調用方法是當需要調用方法執行某個操作時,可以先創建類的對象,然後通過 對象名.方法名();來實現。

方法體放在一對大括號中,實現特定的操作;

方法名主要在調用這個方法的時候使用,需要注意命名規範,一般使用駝峯命名法。

 

2.無參帶返回值方法

當方法沒有參數但有返回值,我們稱這樣的方法爲無參帶返回值方法。調用帶返回值的方法時需要注意,由於方法執行後會返回一個結果,因此在調用帶返回值方法時一般都會接收其返回值並進行處理。

如果方法的返回類型爲void,則方法中不能使用return返回值;

方法的返回值最多只能有一個,不能返回多個值;

方法返回值的類型必須兼容。

 

3.帶參無返回值方法

一個方法有參數但沒有返回值的情況我們稱之爲帶參無返回值方法。調用帶參方法與調用無參方法的語法類似,但在調用時必須傳入實際的參數值。

定義方法時的參數我們稱爲形參,目的是用來定義方法需要傳入的參數的個數和類型

把調用方法時的參數稱爲實參,是傳遞給方法真正被處理的值

調用帶參方法時,必須保證實參的數量、類型、順序與形參一一對應;

調用方法時候,實參不需要指定數據類型;

方法的參數可以是基本數據類型,也可以是引用數據類型;當方法的參數有多個時,多個參數間以逗號分隔。

 

4.帶參帶返回值方法

方法既有參數,又有返回值,我們稱之爲帶參帶返回值的方法。

 

方法的重載

一個類中包含兩個及兩個以上的方法名,但形參列表不同的方法,我們稱之爲方法的重載,也可以說是該方法被重載了。

當調用被重載的方法時,Java會根據參數的個數和類型來判斷應該調用哪個重載方法,參數完全匹配的方法將被執行。

判斷方法重載的依據:必須是在同一個類中;方法名相同;方法參數的個數,順序或類型不同;與方法的修飾符或返回值沒有關係。

 

 


1.Java程序中包是用來管理Java文件,解決同名文件衝突的。

2.定義包通過關鍵字 package 實現的。(package 包名)

3.定義一個包必須放在Java源程序的第一行,包名間可以使用點號 "." 隔開。

4.包的使用可以通過 import 關鍵字加上我們的包名,在某個文件使用我們通過包來修飾的類;

5.Java中包的命名規範:全小寫字母拼寫;

6.使用的時候可以加載某個包下的所有文件(com.ms.*),也可以加載某個具體子包下的所有文件(com.ms.movie.*)。

 

 

構造方法


構造方法是定義在Java類中的一個用來初始化對象的方法。普通方法只是代表對象可以幹什麼;構造方法可以創建一個對象,可以初始化對象的值。構造方法與類名相同且沒有返回值。

初始化對象:使用 new + 構造方法 創建一個新的對象。

構造方法分爲無參構造方法和有參構造方法,沒有參數的構造方法叫做無參構造方法,有參數的構造方法叫做有參構造方法。構造方法的代碼塊中我們放一些初始化的代碼。創建對象我們擁有兩種方法,一種是通過無參的構造方法,另一種是通過有參的構造方法創建對象。通過有參構造方法不僅可以創建對象,還可以給對象賦初始值。

我們創建對象的時候其實就是在執行構造方法(Dog dog = new Dog();

當我們沒有指定構造方法時,系統會自動添加無參的構造方法;當有指定構造方法時,無論是有參、無參的構造方法,都不會自動添加無參的構造方法。

 

 

成員變量和局部變量


成員變量:成員變量一般是我們在類中定義,用來描述對象將要有什麼;

局部變量:局部變量是定義在類的方法中。在方法中臨時保存數據,這些數據就是保存在局部變量中的。

局部變量定義在類的方法內部,成員變量定義在類中。成員變量可以被本類的所有方法使用,也可以被其他和當前類有關係的類的方法所使用,局部變量只能在當前方法中使用。

成員變量和局部變量的區別

1.作用域不同。作用域就是作用的範圍,局部變量的作用域僅限於定義它的方法,成員變量的作用域是整個類。局部變量的範圍是方法的開始到方法的結束,成員變量的作用範圍是類的開始到類的結尾,類中所有的方法都可以共享我們的成員變量。

2.初始值不同。在Java程序中會給成員變量一個初始值,局部變量沒有默認初始值。

3.同一個方法中不允許有同名的局部變量;在不同的方法中可以有同名局部變量。

4.兩種變量同名時,局部變量具有更高的優先級。我們稱此爲就近原則。

 

 

訪問修飾符


訪問修飾符可以修飾屬性和方法的訪問範圍。訪問修飾符有

private:私有的,作用域最小,只能在當前類中被訪問到。(本類訪問)

friendly(默認,未指定):在未指定訪問修飾符的情況下默認是friendly友好的,友好是對同一個包的類友好。

friendly作用域是同個包中的所有類都能進行訪問。用friendly修飾的成員只能被該類所在同一個包中的子類所繼承。就是說只有在相同包下的子類纔可以訪問父類中friendly修飾的成員。(本類+同包類 訪問)

protected:受保護的,受到該類所在的包保護。被protected修飾的成員會被位於同一個包中的所有類訪問到,被protected修飾的成員也能被該類的所有子類繼承。(本類 + 同包類 + 子類 訪問)

public:公共的,被public修飾的內容能在任何類中被訪問到。(都可以訪問)

public修飾類:Java源文件中只能有一個類被聲明爲public,而且被public修飾的類必須和所在源文件的文件名相同,否則編譯不能通過;public修飾變量和方法:可以在任何類中被訪問到,通過操作該類的對象能隨意訪問public成員;public繼承上的運用:被public所修飾的成員能被所有的子類繼承下來。

      作用域   本類(當前類)      同包類       子類      不同包的類
       public            √          √           √             √
     protected            √          √          √  
       friendly            √          √    
       private            √      

 

 

this關鍵字


this關鍵字代表當前對象;

this.屬性 操作當前對象的屬性;

this.方法 調用當前對象的方法;

當我們調用封裝屬性的時候,經常會使用this關鍵字。

 

 

super關鍵字


super關鍵字在對象的內部使用,可以代表父類對象

如果要調用父類的屬性,可以 super.XXX;來實現,如果要調用父類的方法,可以 super.XXX();來實現。

子類構造的過程中必須調用其父類的構造方法。如果子類的構造方法中沒有顯示調用父類的構造方法,則系統默認調用父類無參的構造方法。

如果顯示調用了構造方法,必須在子類構造方法的第一行寫出。

如果子類構造方法中既沒有顯式調用父類的構造方法,而父類又沒有無參的構造方法,則編譯出錯。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章