SVN8.COM - SVN中文技术网

投递文章 投稿指南 SVN中文技术网公告:技术交流诚聘优秀版主最新公告
搜索: 您的位置主页>JAVA技术>语言基础>Java语言基础11-实例变量

Java语言基础11-实例变量

SVN技术网 www.svn8.com 2008-06-04 06:54:30   来源:   作者:  评论:0 点击:

实例变量 page 11 of 37

 

因此,我们根据对象的行为来定义实例,这在很多情况下是合理的,但一般来说,用户定义数据类型也应该包含状态变量。也就是说,对于每个 Dog 的实例,根据毛发颜色、重量等特征来区分是很重要的。区分 Dog 实例的状态变量称为实例变量。

现在我们增加一个实例变量来反应特定狗(dog)的叫声,一个 String 实例可以代表每个狗(dog)的叫声(bark):


class Dog {
  String barkSound = new String("Woof.");

  void bark() {
    System.out.println(barkSound);
  }

  void bark(String barkSound) {
    System.out.println(barkSound);
  }
}

现在 Dog 的定义包括 barkSound 的实例变量。 每次一个新的 Dog 实例创建时,该实例包括一个 String 实例的引用变量表示特定狗(dog)的叫声(bark)。 该 实例 变量初始化为默认值 "Woof." 。 看看这行代码


  String barkSound = new String("Woof.");

这条语句分配了一个初始化为 "Woof." (由括号后的 String 类名提供)的 String 实例,并将数据保存在引用变量 barkSound 中。值得注意的是引用变量 barkSound 是 Dog 每个实例的一部分,它引用一个 String 实例,这个 String 实例象 Dog 实例本身一样,是分配在堆里的:

 

现在默认的叫声行为用一个实例变量来表示,我们可以从原来的 bark() 方法中除去 "Woof." ,而使用 barkSound 的当前值的引用来取代:


  void bark() {
    System.out.println(barkSound);
  }

也就是说,我们把一个无条件状态数据从方法定义转换为用来区分狗(dog)的实例变量,可能更重要的是,对每个特定的狗(dog),这个变量的值可以动态改变。



技术交流 录入:SVN中文技术网[www.svn8.com]
Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - RSS订阅 - 网站地图 - 返回顶部