Chinaunix首页 | 论坛 | 博客
  • 博客访问: 783355
  • 博文数量: 738
  • 博客积分: 7000
  • 博客等级: 少将
  • 技术积分: 5000
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-12 09:00
文章分类

全部博文(738)

文章存档

2011年(1)

2008年(737)

我的朋友

分类:

2008-09-12 09:09:16

    因此,我们根据对象的行为来定义实例,这在很多情况下是合理的,但一般来说,用户定义数据类型也应该包含状态变量。也就是说,对于每个 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),这个变量的值可以动态改变。

 

【责编:landy】

--------------------next---------------------

阅读(399) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~