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


