培訓(xùn)java初老師t05面向?qū)ο骭第1頁(yè)
培訓(xùn)java初老師t05面向?qū)ο骭第2頁(yè)
培訓(xùn)java初老師t05面向?qū)ο骭第3頁(yè)
培訓(xùn)java初老師t05面向?qū)ο骭第4頁(yè)
培訓(xùn)java初老師t05面向?qū)ο骭第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο螅?)上次課回顧1、面向?qū)ο蟮母拍?、類(lèi)與對(duì)象3、構(gòu)造函數(shù)與構(gòu)造函數(shù)的重載目標(biāo)1、this引用2、static關(guān)鍵字3、內(nèi)部類(lèi)4、方法的參數(shù)傳遞引用自身思考:在一個(gè)方法內(nèi)部,我們可以調(diào)用別的對(duì)象,但我們?cè)鯓诱{(diào)用自己所屬的對(duì)象呢?this引用class Person String name; / 名字Public Person(String name) = name;關(guān)鍵字 this 與對(duì)象關(guān)聯(lián)它用于指示當(dāng)前對(duì)象this引用this的作用1、區(qū)分類(lèi)成員屬性和方法的形參.2、this關(guān)鍵字通常用于return語(yǔ)句中返回當(dāng)前對(duì)象的引用。見(jiàn)例子:Leaf.java3、在構(gòu)造方

2、法中調(diào)用其它構(gòu)造方法見(jiàn)例子:Flower.javathis引用在構(gòu)造器中使用this的注意點(diǎn):在構(gòu)造器中用this只能調(diào)用另外一個(gè)構(gòu)造器,不能調(diào)用兩個(gè)。除此以外,構(gòu)建器調(diào)用必須是我們做的第一件事情,否則會(huì)收到編譯程序的報(bào)錯(cuò)信息。static關(guān)鍵字定義靜態(tài)成員變量static 類(lèi)型 成員變量名;特點(diǎn)在類(lèi)載入時(shí)創(chuàng)建可以被各實(shí)例對(duì)象共享可直接通過(guò)“類(lèi)名.靜態(tài)成員變量名”的方法訪(fǎng)問(wèn)該值注意:不能把方法體內(nèi)變量聲明為靜態(tài)例如static int age = 15;System.our.println(Person.age);例子:TestChinese.javastatic關(guān)鍵字確定的變量/常量/類(lèi)將在

3、該類(lèi)被加載的時(shí)候創(chuàng)建且共享它靜態(tài)成員提供了一個(gè)同類(lèi)對(duì)象的共享機(jī)制;把一個(gè)類(lèi)的成員說(shuō)明為 static 時(shí),這個(gè)類(lèi)無(wú)論有多少個(gè)對(duì)象被創(chuàng)建,這些對(duì)象都共享這一個(gè) static 成員;靜態(tài)成員屬于類(lèi),它不是屬于對(duì)象的。實(shí)質(zhì)是類(lèi)的全局?jǐn)?shù)據(jù)static關(guān)鍵字定義靜態(tài)方法修飾符 static 返回類(lèi)型 方法名(參數(shù)列表)特點(diǎn)在靜態(tài)方法中不能調(diào)用類(lèi)中的非靜態(tài)成員/方法在靜態(tài)方法中不能使用this和super關(guān)鍵字在該類(lèi)的非靜態(tài)方法中可以直接調(diào)用靜態(tài)方法main方法也是靜態(tài)方法例如:public static void sing()Static關(guān)鍵字例子:TestChina2.javaStatic關(guān)鍵字定義靜

4、態(tài)代碼塊static 特點(diǎn)常用于類(lèi)屬性的初始化該部分代碼當(dāng)類(lèi)被加載時(shí)執(zhí)行,且只執(zhí)行一次例子:TestStaticCode.java理解main方法的語(yǔ)法理解main方法的語(yǔ)法public static void main(String args)使用String類(lèi)型的數(shù)組參數(shù)C:java myjava 1 2 3單態(tài)設(shè)計(jì)模式Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。 public class Singleton private Singleton() /注意這是private 只供內(nèi)部調(diào)用 private static Singleton in

5、stance = new Singleton(); /這里提供了一個(gè)供外部直接訪(fǎng)問(wèn)本class的靜態(tài)方法 public static Singleton getInstance() return instance; 內(nèi)部類(lèi)(nested classes)將一個(gè)類(lèi)定義置入另一個(gè)類(lèi)定義中就叫作“內(nèi)部類(lèi)”。利用它可對(duì)那些邏輯上相互聯(lián)系的類(lèi)進(jìn)行分組并可控制一個(gè)類(lèi)在另一個(gè)類(lèi)里的“可見(jiàn)性”。內(nèi)部類(lèi)對(duì)象保存了一個(gè)對(duì)外部類(lèi)對(duì)象的引用。OuterClassName.this代表外部類(lèi)對(duì)象的引用InnerClassName.this代表內(nèi)部類(lèi)對(duì)象的引用class Outerint outer_i = 100;vo

6、id test() Inner in = new Inner(); in.display();class Inner void display() System.out.println(display: outer_i = + outer_i); 內(nèi)部類(lèi) 類(lèi)中定義的內(nèi)部類(lèi)1、Inner類(lèi)是在Outer內(nèi)部定義的2、在Inner類(lèi)中可以訪(fǎng)問(wèn)Outer類(lèi)中的成員屬性outer_I;3、在Outer類(lèi)中可在方法test()中創(chuàng)建內(nèi)部類(lèi)Inner的對(duì)象;4、通過(guò)Outer類(lèi)的對(duì)象調(diào)用test()方法最終就可以執(zhí)行Inner類(lèi)中的方法內(nèi)部類(lèi) 類(lèi)中定義的內(nèi)部類(lèi)在內(nèi)部類(lèi)對(duì)象保存了一個(gè)對(duì)外部類(lèi)對(duì)象的引用,當(dāng)內(nèi)

7、部類(lèi)的成員方法中訪(fǎng)問(wèn)某一變量時(shí),如果在該方法和內(nèi)部類(lèi)中都沒(méi)有定義過(guò)這個(gè)變量,內(nèi)部類(lèi)中對(duì)this的引用會(huì)被傳遞給那個(gè)外部類(lèi)對(duì)象的引用。類(lèi)中定義的內(nèi)部類(lèi)特點(diǎn)1、內(nèi)部類(lèi)可以直接訪(fǎng)問(wèn)外部類(lèi)的成員,反之則不行。2、內(nèi)部類(lèi)可以聲明為private或protected。3、內(nèi)部類(lèi)成員只有在內(nèi)部類(lèi)的范圍之類(lèi)是有效的。private內(nèi)部類(lèi)調(diào)用方式:在外部類(lèi)的方法中實(shí)例化內(nèi)部類(lèi),并調(diào)用自己的方法實(shí)例化外部類(lèi),并調(diào)用包含內(nèi)部類(lèi)的方法內(nèi)部類(lèi) 類(lèi)中定義的內(nèi)部類(lèi)例子:InnerClassDemo.javastatic內(nèi)部類(lèi)定義格式修飾符 static class namestatic內(nèi)部類(lèi)特點(diǎn):static內(nèi)部類(lèi)可以象一

8、個(gè)普通外部類(lèi)一樣直接創(chuàng)建該對(duì)象。static內(nèi)部類(lèi)只能訪(fǎng)問(wèn)外部類(lèi)中的靜態(tài)成員或方法。static內(nèi)部類(lèi)可以聲明static成員,但非static的內(nèi)部類(lèi)不可以。修飾符沒(méi)有任何限制。public class StaticInnerDemo String name = Tom; void PrintName() System.out.println( Outer name : +name); public static class Inner int age = 10; void PrintAge() System.out.println( inner age : +age); public st

9、atic void main(String args) Inner inner = new Inner(); inner.PrintAge();static內(nèi)部類(lèi)1、Inner為靜態(tài)內(nèi)部類(lèi)。2、 Inner不能訪(fǎng)問(wèn)names屬性和PrintName()方法。3、在外部類(lèi)中可以直接創(chuàng)建該類(lèi)的對(duì)象。內(nèi)部類(lèi)如何被外部類(lèi)引用將內(nèi)部類(lèi)聲明為非private的就可以通過(guò)外部類(lèi)創(chuàng)建一個(gè)內(nèi)部類(lèi)的對(duì)象引用,并可通過(guò)該引用調(diào)用內(nèi)部類(lèi)自己定義的方法。聲明調(diào)用方法:OuterClass outer = new OuterClass();OuterClass.InnerClass inner = outer.new I

10、nnerClass ();例子:InnerClassDemo.java方法和作用域中的內(nèi)部類(lèi)內(nèi)部類(lèi)并非只能在類(lèi)里定義,也可以在幾個(gè)程序塊的范圍之內(nèi)定義內(nèi)部類(lèi)。特點(diǎn):可訪(fǎng)問(wèn)外部類(lèi)的成員變量。只能訪(fǎng)問(wèn)所在方法中的final類(lèi)型的局部變量,因?yàn)橛胒inal定義的局部變量相當(dāng)于一個(gè)常量,它的生命周期超出方法運(yùn)行的生命周期。該類(lèi)型的內(nèi)部類(lèi)調(diào)用方法:直接通過(guò)外部類(lèi)來(lái)調(diào)用內(nèi)部類(lèi)所在的方法。OuterClass.innerOfOuterMethod();方法和作用域中的內(nèi)部類(lèi)public class InOut String str = new String(Between); public void ame

11、thod(final int iArgs) fianl int a = 12; class Bicycle public void sayHello() System.out.println(str); System.out.println(a); System.out.println(iArgs); Bicycle bicycle = new Bicycle(); bicycle.sayHello(); 1、str為外部類(lèi)的成員變量。2、iArgs和 a都是方法amethod的局部final變量。InOut inout = new InOut( );Inout.amethod( 5);更典型

12、的一種情況是,一個(gè)外部類(lèi)擁有一個(gè)特殊的方法,它會(huì)返回指向一個(gè)內(nèi)部類(lèi)的句柄。見(jiàn)例子: Parcel.java內(nèi)部類(lèi)(nested classes)方法的參數(shù)傳遞基本數(shù)據(jù)類(lèi)型的參數(shù)傳遞基本類(lèi)型的變量作為實(shí)參傳遞,并不能改變這個(gè)變量的值。方法中的形式參數(shù)相當(dāng)與局部變量,方法調(diào)用結(jié)束后自行釋放,不會(huì)影響到主程序的同名變量。例子:PassValue.java方法的參數(shù)傳遞基本數(shù)據(jù)類(lèi)型的參數(shù)傳遞內(nèi)存分配方法的參數(shù)傳遞引用數(shù)據(jù)類(lèi)型的參數(shù)傳遞Java語(yǔ)言在給被調(diào)用方法的參數(shù)賦值時(shí),只采用傳值方式。引用數(shù)據(jù)類(lèi)型傳遞也是這個(gè)變量的值本身,即對(duì)象的引用(句柄),可通過(guò)引用柄來(lái)改變對(duì)象的內(nèi)容,但不能改變對(duì)象的引用。例子:PassRef.java方法的參數(shù)傳遞使用Java的文檔注釋文檔注釋?zhuān)?* */javadoc工具例如:/* * Title: InOut * Description:在方法中定義內(nèi)例子 * Copyright: Copyright (c) 2006 * Company: tsinghua * author xiaoyanni * version 1.0 */javadocoptionspackagenamesso

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論