

電腦編程技巧與維護“this"”在Java中的應用分析陳雋.(江蘇淮安市行政學(xué)院,淮安223001)摘要: Java提供了豐富的類(lèi)(Class)、 接口(Interface) 以及相應的方法(Method)。 使用這些類(lèi)或接口,用戶(hù)可以定義自己的類(lèi)或子類(lèi),并以這些類(lèi)為模板創(chuàng )建對象(0bject)。 關(guān)鍵宇“this”" 與“對象”密切相關(guān),并使程序設計變得規范、簡(jiǎn)單、靈話(huà)。但在使用過(guò)程中,在不同場(chǎng)合其含義不完全相同,使用不當還會(huì )出現錯誤,對“this" 的幾種主要用法和出現的問(wèn)題進(jìn)行了分析。關(guān)鍵詞:類(lèi);對象; this ."this" in Java Application AnalysisCHEN Juan(Huai an Administrative College, Huai'an 223001)Abstract: Java provides a rich class, interface and the corresponding method, by these classes or interfaces, users candefine their own clases or sub-calegories, and to these classes as a template to create the object. Keyword "this" and”object" is closely related to, and make program design has become slandard, simple, spiritual words. However, the use of theprocess, on various occasions, its meaning is not identical to, improper use will be an eror, the paper "this" usage andseveral major problems were analyzed.Key words: Class; Object; this1“"this" 的概述class Fruitpie {1.1區分類(lèi)變與局部變量double Weight;java. util. Data Whenmade;當定義一個(gè)類(lèi)及其方法(包括構造函數)時(shí),為了區分同Fruitpie (inti) {名的類(lèi)變量和方法中的局部變量,在類(lèi)變址名前使用關(guān)鍵字this ( ( double) i) ;} 11表示調用Frutpie ( double d)“this" .這是最常見(jiàn)的用法。Fruitpie ( double d)例如:Weight= d;class Employee {Whenmade=new java.util.Date 0} .public String Name;尤其當一個(gè)構造兩數做了所有的構造附數都需要做的許public double Salary;多初始化工作時(shí),使用“this (.)” 的好處就非常明顯了,它public Static double defaultSalary: 1000.0;有助于減少多余的代碼。public Employee ( String Name) {this. Name=Name; /賦值號” =”前表示類(lèi)變量Salay=defaulSalary;}public Employee ( String Name, double Salary) {public int EmployeeID;this.Name=Name;this. Salary= Salary;} }public int OfficeNumber;這種用法不易出錯,當然,如果類(lèi)變量與局部變量使用public String Car;不同的名字,則叮避免使用"this"。public static int defaultID=300;1.2調用本類(lèi)中的其他構造函數public static int defaltofficeNumher-200;當一個(gè)類(lèi)中有重載的構造函數時(shí),在一-個(gè)構造函數中可public static double defaulSalary= 100.0;使用“this (-)" 來(lái)調用同一類(lèi)中不同的構造兩數。此時(shí)public Employee ( String Name, String Car)“this (.)”" 表示調用同名的其他構造函數中參數匹配的一-個(gè)this (Name) ; /表示調用Employee (String Name)this.Car=Car;}構造函數。當一個(gè)類(lèi)中有幾個(gè)構造咽數來(lái)滿(mǎn)足幾個(gè)不同類(lèi)型的變量的初始化要求時(shí),就可能從一個(gè)構造函數中調用另一中國煤化工個(gè)構造函數。HCNMHGOfticeNumber- adefautfficeNumber++;Salary=defaulSalary;}}本文收稿日期: 2009-10-21- 12-SOFTWARE DEVELOPMENT AND DESIGN軟件開(kāi)發(fā)與設計要注意的是:當使用“this (-)”(或使用 "super (-.)import java.applet. *;調用本類(lèi)(或超類(lèi))的構造函數時(shí),必須把該調用語(yǔ)句作為構public class Showlmage extends Applet造麗數的第一條語(yǔ)句,并且保證“this (-.)”"或“super (-.)”{lmagc picture;Public void init 0 {括號中的參數個(gè)數和類(lèi)型與本類(lèi)(或超類(lèi))其他某個(gè)構造函數picture= getlmage ( getCodeBase 0," wl.gi") ;}完全匹配,否則編譯時(shí)將提示出錯。public void paint ( Graphics g) {1.3創(chuàng )建-個(gè)線(xiàn)程對象new Thread ( this)g.drawlmage ( picture,0,0,this) ;}}當聲明一個(gè)實(shí)現Runnable接口而且是擴展Applet類(lèi)的-要注意的是:如果在drawlmage (.) 方法中缺少圖像觀(guān)察個(gè)子類(lèi)(apple) 后,在它的start 0方法中創(chuàng )建一個(gè)線(xiàn)程對象器對象這一項參數而方法不匹配,編譯時(shí)將出現錯誤提示時(shí),要求用一個(gè)可實(shí)現Runnable接口的對象(正是它實(shí)現了“找不到匹配的drawlmage (..方法"。如果把在本例中的觀(guān)察Runnable接口中的抽象方法run () )作為參數傳遞給構造器對象這- -項寫(xiě)成“ull" ,即使編譯不出錯,運行時(shí)也不會(huì )函數Thread ( Runnable targe),此時(shí)用“this" 表示實(shí)現run 0顯示圖像。把最后一個(gè)參數寫(xiě)成"this” 即可顯示圖像。方法的當前對象(即Applet對象),利用“this" 關(guān)鍵字,ap-例外: .plet創(chuàng )建了-個(gè)對應于本applet的執行線(xiàn)程,該線(xiàn)程啟動(dòng)后執(1)在雙緩沖圖像處理時(shí),若先把圖像畫(huà)到內存中脫屏圖行的就是作為參數傳遞給其構造麗數的對象里的代碼,即通形環(huán)境上,再用drawlmage (..把圖像顯示在屏幕上時(shí),過(guò)調用線(xiàn)程對象的start 0方法來(lái)自動(dòng)調用run 0函數。.this" 可改為“nul";例如: .(2)若drawlmage (.是由線(xiàn)程對象(new Thread (his)其他語(yǔ)句的run 0方法中的repaint 0調用時(shí),“this" 也可改為"ull”。public class Mar extends Applet implements Runnahle1.5 其他{Thread MarThread=oull;除上述情況外,"this" 還可用在其他場(chǎng)合。例如在多線(xiàn).. /其他類(lèi)變量public void int () ..程程序中,要保證-一個(gè)線(xiàn)程在接觸- 些特殊數據時(shí)另- -個(gè)線(xiàn)public void start 0 {程不能接觸,即線(xiàn)程的互斥?;コ馐墙⒃跀祿ο蠡A上if (MarThread= =nul)的。程序員只需使用“synchronized" 關(guān)鍵字說(shuō)明程序的范圍MarThread = new Thread (this) ;(類(lèi)、語(yǔ)創(chuàng )塊或方法)和在哪個(gè)范圍內必須互斥的對象。如在11" this"表示實(shí)現Runnable接口的對象一個(gè)非靜態(tài)的乃法前使用"ynchronized"就可實(shí)現方法的互MarThread. Start 0 ;}}public void run ()i斥,此時(shí)所提供互斥的對象是隱含的"this” 對象。. /其他語(yǔ)句例如:Repaint 0 ;}synchronized void complex ..就等價(jià)于public void paint (Graphicsg) {..}void complex {要注意的是: new Thread (this) 括號中為空時(shí),雖然編譯synchronized (this) (-.}}源程序時(shí)沒(méi)有發(fā)現錯誤,但不執行run 0。本例必須以“this"2結語(yǔ)作為參數創(chuàng )建線(xiàn)程對象new Thread (this), 也不能用“null”"Java中的"this" 與面向對象的程序設計密切相關(guān),它表來(lái)代替“this"。示當前對象。但在不同的使用場(chǎng)合其表示的真正含意是不完1.4作為圖像觀(guān)察器接口的對象全一樣的。由文中可知,盡管在使用過(guò)程中有時(shí)可避免使用在調用drawlmage (Image img,int x, int y.ImageObserver ob-“this",但在該使用“this" 的地方漏寫(xiě)或用其他來(lái)代替,會(huì )造server) 或其他同名的drawlmage (.方法來(lái)顯示圖像時(shí),要成程序的編譯或運行錯誤,而“this” 的使用在節省代碼、區求其最后一個(gè)參數總是為ImageObsever對象,由于在調用分類(lèi)變量與局部變量、支持線(xiàn)程、顯示圖像等多方面都起著(zhù)drawlmage (") 方法之前,首先調用getImage (") 把某個(gè)圖重要的作用,編程時(shí)應重視并正確使用它。像文件裝入內存并賦給一個(gè)圖像變量, 那些被讀人的圖像數參考文獻據稱(chēng)為可瀏覽(觀(guān)察)事件,并叮指定某個(gè)對象作為圖像觀(guān)察[1] (美) Kris Jamsa著(zhù),楊武杰譯. JAVA 教程.北京:電子器(mageObserver) 來(lái)瀏覽(觀(guān)察) 這些圖像。Java 的組件類(lèi)。工業(yè)出版社, 2001.(如每個(gè)按鈕、框架、畫(huà)布、面板、標簽等)實(shí)現了圖像觀(guān)察[2] (美) James Gosling著(zhù),李健鈞譯. Java 應用程序設計接器接口,并能登記讀人圖像的有關(guān)信息。由于小應用程序口.北京:北京大學(xué)出版社,2002.(applet)屬于面板(panel) 類(lèi)的子類(lèi),因此也是圖像觀(guān)察器,[3] (美) Doug lea著(zhù), 嚴偉譯. Java并發(fā)程序設計.北京:北所以通常把"this” 作為drawlmage ()方法中的最后一個(gè)參數,使得其它的操作就能默認地正常進(jìn)行下去,并隨著(zhù)圖像中國煤化工_的逐步裝人內存,越來(lái)越多的圖像被畫(huà)到屏幕上。作者簡(jiǎn)MHCNMH G陳雋,女(1975-),本科學(xué)士學(xué)位,計算機講師,研究方向:import java. awt*;政府信息化、電子政務(wù)、電子商務(wù)。- 13-
-
C4烯烴制丙烯催化劑 2020-09-25
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-09-25
-
生物質(zhì)能的應用工程 2020-09-25
-
我國甲醇工業(yè)現狀 2020-09-25
-
JB/T 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規程 2020-09-25
-
石油化工設備腐蝕與防護參考書(shū)十本免費下載,絕版珍藏 2020-09-25
-
四噴嘴水煤漿氣化爐工業(yè)應用情況簡(jiǎn)介 2020-09-25
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-09-25
-
甲醇制芳烴研究進(jìn)展 2020-09-25
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-09-25