北方站长站
客服热线:0632-5117766

Java中的两个特殊变量this和super

[2005-12-27 00:00:00] 作者:Northz.com 来源:北方站长站

Tags:变量 特殊 两个 方法 name 成员 String this 参数 对象

  

因此它们都是非常有用的变量,下面我想介绍一下this和super的使用方法。sCc北方站长站
  1、thissCc北方站长站
  让我们先看一段代码吧:sCc北方站长站
  class PersonInformationsCc北方站长站
  {sCc北方站长站
   String name,gender,nationality,address;sCc北方站长站
   int age;sCc北方站长站
   void PersonInformation(String p_name,String p_gender,String p_nationality,String p_address,int p_age)sCc北方站长站
   {sCc北方站长站
    name=p_name;sCc北方站长站
    gender=p_gender;sCc北方站长站
    nationality=p_nationality;sCc北方站长站
    address=p_address;sCc北方站长站
    age=p_age;sCc北方站长站
   }sCc北方站长站
  }sCc北方站长站
 sCc北方站长站
  你会发现,在PersonInformation()函数中这个对象的方法提示可以直接访问对象的成员变量的,而且在同一个范围中,定义两个相同的名字的局部变量是不允许的,如果确实想使类的成员变量和方法的参数或方法自己定义的局部变量同名的话就需要想一种方法使成员变量与更它同名的方法参数或局部变量区分开来,这就要使用到this变量。下面我想改写一下上面的代码,使PersonInformation类的构造函数的每个参数都有与对象成员变量相同的名字,而成员变量的初值由参数给出。sCc北方站长站
  class PersonInformationsCc北方站长站
   {sCc北方站长站
    String name,gender,nationality,address;sCc北方站长站
    int age;sCc北方站长站
    void PersonInformation(String name,String gender,String nationality,String address,int age)sCc北方站长站
    {sCc北方站长站
    this.name=name;sCc北方站长站
    this.gender=gender;sCc北方站长站
    this.nationality=nationality;sCc北方站长站
    this.address=address;sCc北方站长站
    this.age=age;sCc北方站长站
    }sCc北方站长站
   }sCc北方站长站
  由上一例中,我们可以看出,该构造函数中必须使用this,this在方法体重用来指向引用当前正在执行方法的那个对象实例,this变量的类型总是为包含前执行方法的类,上例中,我们要区别参数name和成员变量name,写成name=name显然是不允许的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,这样在方法体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。sCc北方站长站
  有时候会遇到这种情况,我们全面的访问当前对象,而不是访问某一个个别的实例对象,我们也可以使用this,并利用Java中的toString()方法(它能够返回一个描述这个对象的字符串)如果把任何一个对象传递到System.out.println方法中,这个方法调用这个对象的toString方法,并打印出结果字符串,所以,我们可以用如下方法System.out.println(this),来打印出任何对方法固有参数的当前状态。sCc北方站长站
  this还有一个用法,就是构造函数的第一个语句,它的形式是this(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。请看下面的例子:sCc北方站长站
  class UserInfo sCc北方站长站
  {sCc北方站长站
   public UserInfo(String name)sCc北方站长站
   {sCc北方站长站
    this(name,aNewSerialNumber);sCc北方站长站
   }sCc北方站长站
   public Userinfo(String name,int number)sCc北方站长站
   {sCc北方站长站
    userName=name;sCc北方站长站
    userNumber=number;sCc北方站长站
   }sCc北方站长站
   }sCc北方站长站
  如果你调用UserInfor newinfotable = new UserInfo("Wayne Zheng")后,就会自动调用UserInfo(String name,int number)构造函数。sCc北方站长站
   可见,熟练掌握this在Java程序设计过程中是非常重要的sCc北方站长站
  2、supersCc北方站长站
  在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名,因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量和方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,此使就需要用到super,请看下面的类。sCc北方站长站
   class CountrysCc北方站长站
   {sCc北方站长站
    String name;sCc北方站长站
    void value()sCc北方站长站
    {sCc北方站长站
     name="China";sCc北方站长站
    }sCc北方站长站
   }sCc北方站长站
  下面的子类中,自类的成员变量和方法隐藏了超类的成员变量name和方法value(),sCc北方站长站
   class City extends CountrysCc北方站长站
    String name;sCc北方站长站
    void value() sCc北方站长站
    {sCc北方站长站
     name="Hefei";sCc北方站长站
     super.value();sCc北方站长站
     System.out.println(name);sCc北方站长站
     System.out.println(super.name);sCc北方站长站
    }sCc北方站长站
 sCc北方站长站
   为了在子类中引用超类中的成员变量name和方法value(),在代码中我们使用了super,super.name和super.value();sCc北方站长站
   所以显示的结果为sCc北方站长站
   HefeisCc北方站长站
   ChinasCc北方站长站
   如果我们想要使用超类的构造函数则应当使用super(参数列表)的形式。sCc北方站长站

 

News

 

info

 

down

出售手机裁听器,手机跟踪定位系统    企业网站,网城,购物网,都市导购,校园网    网上书店系统    上海电信机房服务器托管,双线主机托管    美女图片馆    15G 高清晰图片资源 无水印    室内装潢材料新产品杰威尔艺术漆    收一万ip的美女图片    大量收购个人网址导航网站    出售网址站PR=4alexa=119,764    

下一篇链接:用XSLT和XML改进Struts

上一篇链接:Java规则引擎与其API应用详解

评论】 【打印】 【加入收藏】 【关闭→论坛 →博客 →数据中心

 共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面