A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐卓 中级黑马   /  2013-7-11 16:45  /  1431 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐卓 于 2013-7-11 20:29 编辑
  1. class GoodDogTestDrive
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 GoodDog one = new GoodDog();
  6.                 one.setSize(70);
  7.                 GoodDog two = new GoodDog();
  8.                 two.setSize(8);
  9.                 System.out.println("Dog one:"+ one.getSize());
  10.                 System.out.println("Dog two:"+two.getSize());
  11.                 one.bark();
  12.                 two.bark();
  13.         }
  14. }
  15. class GoodDog
  16. {
  17.         private int size;                //实例变量设定为私有
  18.         public int getSize()
  19.         {
  20.                 return size;
  21.         }
  22.         public void setSize (int s)
  23.         {
  24.                 size = s;
  25.         }
  26.         void bark () {
  27.         if (size>60)
  28.         {
  29.                 System.out.println("Wooof! Wooof!");
  30.         }else if (size >14)
  31.         {
  32.                 System.out.println("Ruff! Ruff!");
  33.         }else {
  34.         System.out.println("Yip! Yip!");
  35.         }
  36.         }
  37. }
复制代码
在第24行size = s,是把调入的值赋值给size,于第17行的私有size一样吗 ,求解

评分

参与人数 1技术分 +1 收起 理由
张勇1993 + 1 好好学习 天天向上

查看全部评分

10 个回复

倒序浏览
是一样的,都是数据成员名!
回复 使用道具 举报
this是为了明确表示引用的是类的数据成员,而不是形参或局部变量,这是在当成员方法行的形参与数据成员名相同时候,或者成员方法的局部变量名可能出现混淆时应用的,你代码里面没有令到歧义的参数,因此是默认为类的数据成员的。但是当代码public void setSize (int s)
        {
             int size;
                this.size = s;  //就需加this表示本类的数据成员
        }
希望采纳。
回复 使用道具 举报
龚首道 来自手机 中级黑马 2013-7-11 19:58:54
板凳
本帖最后由 龚首道 于 2013-7-11 20:03 编辑

把()里的int s直接换成int size可以不?然后在代码块里用this.size=size;?public void setSize (int size)        
{                 
         this.size= size;
}
回复 使用道具 举报
还有,你这里的if语句写的不是很好,有漏洞
回复 使用道具 举报
在乎.. 发表于 2013-7-11 18:44
是一样的,都是数据成员名!

哦  谢谢
回复 使用道具 举报
徐卓 中级黑马 2013-7-11 20:26:20
7#
在乎.. 发表于 2013-7-11 18:53
this是为了明确表示引用的是类的数据成员,而不是形参或局部变量,这是在当成员方法行的形参与数据成员名相 ...

恩是的  可以用this解决,这个是抄的书上的一段代码
回复 使用道具 举报
徐卓 中级黑马 2013-7-11 20:26:39
8#
龚首道 发表于 2013-7-11 19:58
把()里的int s直接换成int size可以不?然后在代码块里用this.size=size;?public void setSize (int size ...

可以这样
回复 使用道具 举报
徐卓 中级黑马 2013-7-11 20:26:59
9#
龚首道 发表于 2013-7-11 20:04
还有,你这里的if语句写的不是很好,有漏洞

这个是书上的代码 ,我没有进行修改
回复 使用道具 举报
龚首道 发表于 2013-7-11 19:58
把()里的int s直接换成int size可以不?然后在代码块里用this.size=size;?public void setSize (int size ...

public void setSize (int size) 这个size 只是一个形式参数,只要符合java参数的名字就行了,不必拘束的。
你这this.size=size; 一般都是这样定义的,少人写s 。
回复 使用道具 举报
在乎.. 发表于 2013-7-11 20:40
public void setSize (int size) 这个size 只是一个形式参数,只要符合java参数的名字就行了,不必拘束的 ...

哦,明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马