"this"在Java中的应用分析 "this"在Java中的应用分析

"this"在Java中的应用分析

  • 期刊名字:电脑编程技巧与维护
  • 文件大小:799kb
  • 论文作者:陈隽
  • 作者单位:江苏淮安市行政学院
  • 更新时间:2020-09-25
  • 下载次数:
论文简介

电脑编程技巧与维护“this"”在Java中的应用分析陈隽.(江苏淮安市行政学院,淮安223001)摘要: Java提供了丰富的类(Class)、 接口(Interface) 以及相应的方法(Method)。 使用这些类或接口,用户可以定义自己的类或子类,并以这些类为模板创建对象(0bject)。 关键宇“this”" 与“对象”密切相关,并使程序设计变得规范、简单、灵话。但在使用过程中,在不同场合其含义不完全相同,使用不当还会出现错误,对“this" 的几种主要用法和出现的问题进行了分析。关键词:类;对象; 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区分类变与局部变量double Weight;java. util. Data Whenmade;当定义一个类及其方法(包括构造函数)时,为了区分同Fruitpie (inti) {名的类变量和方法中的局部变量,在类变址名前使用关键字this ( ( double) i) ;} 11表示调用Frutpie ( double d)“this" .这是最常见的用法。Fruitpie ( double d)例如:Weight= d;class Employee {Whenmade=new java.util.Date 0} .public String Name;尤其当一个构造兩数做了所有的构造附数都需要做的许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;这种用法不易出错,当然,如果类变量与局部变量使用public String Car;不同的名字,则叮避免使用"this"。public static int defaultID=300;1.2调用本类中的其他构造函数public static int defaltofficeNumher-200;当一个类中有重载的构造函数时,在一-个构造函数中可public static double defaulSalary= 100.0;使用“this (-)" 来调用同一类中不同的构造兩数。此时public Employee ( String Name, String Car)“this (.)”" 表示调用同名的其他构造函数中参数匹配的一-个this (Name) ; /表示调用Employee (String Name)this.Car=Car;}构造函数。当一个类中有几个构造咽数来满足几个不同类型的变量的初始化要求时,就可能从一个构造函数中调用另一中国煤化工个构造函数。HCNMHGOfticeNumber- adefautfficeNumber++;Salary=defaulSalary;}}本文收稿日期: 2009-10-21- 12-SOFTWARE DEVELOPMENT AND DESIGN软件开发与设计要注意的是:当使用“this (-)”(或使用 "super (-.)import java.applet. *;调用本类(或超类)的构造函数时,必须把该调用语句作为构public class Showlmage extends Applet造丽数的第一条语句,并且保证“this (-.)”"或“super (-.)”{lmagc picture;Public void init 0 {括号中的参数个数和类型与本类(或超类)其他某个构造函数picture= getlmage ( getCodeBase 0," wl.gi") ;}完全匹配,否则编译时将提示出错。public void paint ( Graphics g) {1.3创建-个线程对象new Thread ( this)g.drawlmage ( picture,0,0,this) ;}}当声明一个实现Runnable接口而且是扩展Applet类的-要注意的是:如果在drawlmage (.) 方法中缺少图像观察个子类(apple) 后,在它的start 0方法中创建一个线程对象器对象这一项参数而方法不匹配,编译时将出现错误提示时,要求用一个可实现Runnable接口的对象(正是它实现了“找不到匹配的drawlmage (..方法"。如果把在本例中的观察Runnable接口中的抽象方法run () )作为参数传递给构造器对象这- -项写成“ull" ,即使编译不出错,运行时也不会函数Thread ( Runnable targe),此时用“this" 表示实现run 0显示图像。把最后一个参数写成"this” 即可显示图像。方法的当前对象(即Applet对象),利用“this" 关键字,ap-例外: .plet创建了-个对应于本applet的执行线程,该线程启动后执(1)在双缓冲图像处理时,若先把图像画到内存中脱屏图行的就是作为参数传递给其构造丽数的对象里的代码,即通形环境上,再用drawlmage (..把图像显示在屏幕上时,过调用线程对象的start 0方法来自动调用run 0函数。.this" 可改为“nul";例如: .(2)若drawlmage (.是由线程对象(new Thread (his)其他语句的run 0方法中的repaint 0调用时,“this" 也可改为"ull”。public class Mar extends Applet implements Runnahle1.5 其他{Thread MarThread=oull;除上述情况外,"this" 还可用在其他场合。例如在多线.. /其他类变量public void int () ..程程序中,要保证-一个线程在接触- 些特殊数据时另- -个线public void start 0 {程不能接触,即线程的互斥。互斥是建立在数据对象基础上if (MarThread= =nul)的。程序员只需使用“synchronized" 关键字说明程序的范围MarThread = new Thread (this) ;(类、语创块或方法)和在哪个范围内必须互斥的对象。如在11" this"表示实现Runnable接口的对象一个非静态的乃法前使用"ynchronized"就可实现方法的互MarThread. Start 0 ;}}public void run ()i斥,此时所提供互斥的对象是隐含的"this” 对象。. /其他语句例如:Repaint 0 ;}synchronized void complex ..就等价于public void paint (Graphicsg) {..}void complex {要注意的是: new Thread (this) 括号中为空时,虽然编译synchronized (this) (-.}}源程序时没有发现错误,但不执行run 0。本例必须以“this"2结语作为参数创建线程对象new Thread (this), 也不能用“null”"Java中的"this" 与面向对象的程序设计密切相关,它表来代替“this"。示当前对象。但在不同的使用场合其表示的真正含意是不完1.4作为图像观察器接口的对象全一样的。由文中可知,尽管在使用过程中有时可避免使用在调用drawlmage (Image img,int x, int y.ImageObserver ob-“this",但在该使用“this" 的地方漏写或用其他来代替,会造server) 或其他同名的drawlmage (.方法来显示图像时,要成程序的编译或运行错误,而“this” 的使用在节省代码、区求其最后一个参数总是为ImageObsever对象,由于在调用分类变量与局部变量、支持线程、显示图像等多方面都起着drawlmage (") 方法之前,首先调用getImage (") 把某个图重要的作用,编程时应重视并正确使用它。像文件装入内存并赋给一个图像变量, 那些被读人的图像数参考文献据称为可浏览(观察)事件,并叮指定某个对象作为图像观察[1] (美) Kris Jamsa著,杨武杰译. JAVA 教程.北京:电子器(mageObserver) 来浏览(观察) 这些图像。Java 的组件类。工业出版社, 2001.(如每个按钮、框架、画布、面板、标签等)实现了图像观察[2] (美) James Gosling著,李健钧译. Java 应用程序设计接器接口,并能登记读人图像的有关信息。由于小应用程序口.北京:北京大学出版社,2002.(applet)属于面板(panel) 类的子类,因此也是图像观察器,[3] (美) Doug lea著, 严伟译. Java并发程序设计.北京:北所以通常把"this” 作为drawlmage ()方法中的最后一个参数,使得其它的操作就能默认地正常进行下去,并随着图像中国煤化工_的逐步装人内存,越来越多的图像被画到屏幕上。作者简MHCNMH G陈隽,女(1975-),本科学士学位,计算机讲师,研究方向:import java. awt*;政府信息化、电子政务、电子商务。- 13-

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。