|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
Java中的两个特别变量this和super2001-04-26· ·Wayne ··yesky 在Java中有两个异常特别的变量:this和super,这两个变量在使用前都是不需要声明的。this变量使用在一个成员函数的内部,指向当前对象,当前对象指的是调用当前正在执行方式的那个对象。super变量是直接指向超类的构造函数,用来引用超类中的变量和方式。因此它们都是异常有用的变量,下面我想介绍一下this和super的使用方式。 1、this 让我们先看一段代码吧: class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String p_name,String p_gender,String p_nationality,String p_address,int p_age) { name=p_name; gender=p_gender; nationality=p_nationality; address=p_address; age=p_age; } } 你会发现,在PersonInformation()函数中这个对象的方式提示可以直接访问对象的成员变量的,而且在同一个范围中,定义两个一样的名字的局部变量是不答应的,假如确实想使类的成员变量和方式的参数或方式自己定义的局部变量同名的话就需要想一种方式使成员变量与更它同名的方式参数或局部变量区分开来,这就要使用到this变量。下面我想改写一下上面的代码,使PersonInformation类的构造函数的每个参数都有与对象成员变量一样的名字,而成员变量的初值由参数给出。 class PersonInformation { String name,gender,nationality,address; int age; void PersonInformation(String name,String gender,String nationality,String address,int age) { this.name=name; this.gender=gender; this.nationality=nationality; this.address=address; this.age=age; } } 由上一例中,我们可以看出,该构造函数中必须使用this,this在方式体重用来指向引用当前正在执行方式的那个对象实例,this变量的类型总是为包含前执行方式的类,上例中,我们要区别参数name和成员变量name,写成name=name显然是不答应的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,这样在方式体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。 有时候会碰到这种情况,我们全面的访问当前对象,而不是访问某一个个别的实例对象,我们也可以使用this,并利用Java中的toString()方式(它能够返回一个描述这个对象的字符串)假如把任何一个对象传递到System.out.println方式中,这个方式调用这个对象的toString方式,并打印出结果字符串,所以,我们可以用如下方式System.out.println(this),来打印出任何对方式固有参数的当前状态。 this还有一个用法,就是构造函数的第一个语句,它的形式是this(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。请看下面的例子: class UserInfo { public UserInfo(String name) { this(name,aNewSerialNumber); } public Userinfo(String name,int number) { userName=name; userNumber=number; } } 假如你调用UserInfor newinfotable = new UserInfo("Wayne Zheng")后,就会自动调用UserInfo(String name,int number)构造函数。 可见,纯熟把握this在Java程序设计过程中是异常重要的 2、super 在Java中,有时还会碰到子类中的成员变量或方式与超类(有时也称父类)中的成员变量或方式同名,因为子类中的成员变量或方式名优先级高,所以子类中的同名成员变量和方式就隐藏了超类的成员变量或方式,但是我们假如想要使用超类中的这个成员变量或方式,此使就需要用到super,请看下面的类。 class Country { String name; void value() { name="China"; } } 下面的子类中,自类的成员变量和方式隐藏了超类的成员变量name和方式value(), class City extends Country String name; void value() { name="Hefei"; super.value(); System.out.println(name); System.out.println(super.name); } 为了在子类中引用超类中的成员变量name和方式value(),在代码中我们使用了super,super.name和super.value(); 所以显示的结果为 Hefei China 假如我们想要使用超类的构造函数则应当使用super(参数列表)的形式。 返回类别: 教程 上一教程: WebWork2源码分析续一 下一教程: java:自己写的实现翻页功能的类 您可以阅读与"Java中的两个特别变量this和super"相关的教程: · JAVA中的两个特别变量THIS和SUPER · Java多线程中的两个问题 · Thinking:Java中static、this、super、final用法 · Java中static、this、super、final用法 · Java中static、this、super、final用法 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |