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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 下一页5 中级黑马   /  2015-5-16 15:02  /  393 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. 面向对象练习
  3. 使用面向对象写出小猫的年龄,名字,性别等

  4. */
  5. class CatDemo
  6. {
  7. public static void main(String[] args)
  8. {
  9. Cat a = new Cat();
  10. a.setAge(3);
  11. a.setName("小白");
  12. a.sex = "母";
  13. a.talk();
  14. }
  15. }

  16. class Cat
  17. {
  18. private int age;
  19. public void setAge(int x)
  20. {
  21. if (x>0 && x<130)
  22. age = x;
  23. else
  24. System.out.println("输入的年龄错误!");
  25. }
  26. public int getAge()
  27. {
  28. return age;
  29. }
  30. private String name= "小黑";
  31. public void setName()
  32. {
  33. this.name = name;
  34. }
  35. public String getName()
  36. {
  37. return name;
  38. }
  39. String sex = "公";
  40. void talk()
  41. {
  42. System.out.println("我叫"+name+"\n"+"我的性别为"+sex+"\n"+"我今年"+age+"岁了!");
  43. }
  44. }




  45. /*


  46. CatDemo.java:12: 错误: 无法将类 Cat中的方法 setName应用到给定类型;
  47. a.setName("小白");
  48. ^
  49. 需要: 没有参数
  50. 找到: String
  51. 原因: 实际参数列表和形式参数列表长度不同
  52. 1 个错误
  53. */
复制代码

5 个回复

倒序浏览
把 public void setName() 改成 public void setName(String name)
回复 使用道具 举报
kingowe 发表于 2015-5-16 15:05
把 public void setName() 改成 public void setName(String name)
  1. /*
  2. 面向对象练习
  3. 使用面向对象写出小猫的年龄,名字,性别等

  4. */
  5. class CatDemo
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 Cat a = new Cat();
  10.                 a.setAge(3);
  11.                 a.setName("小白");
  12.                 a.sex = "母";
  13.                 a.talk();
  14.         }
  15. }

  16. class Cat
  17. {
  18.         private int age;
  19.         public void setAge(int x)
  20.         {
  21.                 if (x>0 && x<130)
  22.                         age = x;
  23.                 else
  24.                         System.out.println("输入的年龄错误!");
  25.         }
  26.         public int getAge()
  27.         {
  28.                 return age;
  29.         }
  30.         private String name=  "小黑";
  31.         public void setName(String y)//这个地方定义一个y,就编译通过了,用this怎么不通过?
  32.         {
  33.                 //this.name = name;
  34.                 name = y;
  35.         }
  36.         public String getName()
  37.         {
  38.                 return name;
  39.         }
  40.         String sex = "公";
  41.         void talk()
  42.         {
  43.                 System.out.println("我叫"+name+"\n"+"我的性别为"+sex+"\n"+"我今年"+age+"岁了!");
  44.         }
  45. }
复制代码
回复 使用道具 举报

关键是我想用this来写这个String可是报错了

CatDemo.java:12: 错误: 无法将类 Cat中的方法 setName应用到给定类型;
                a.setName("小白");
                 ^
  需要: 没有参数
  找到: String
  原因: 实际参数列表和形式参数列表长度不同
1 个错误


知道怎么回事么?
回复 使用道具 举报
下一页5 发表于 2015-5-16 15:13
关键是我想用this来写这个String可是报错了

CatDemo.java:12: 错误: 无法将类 Cat中的方法 setName应用 ...

这样:   
     public void setName(String name1)
        {
                this.name = name1;   
// this.name 表示的是当前类中的属性name,=后边的name1是参数name1
        }

一般不使用 name1命名,而是:
     public void setName(String name)
        {
                this.name = name;   // 加 this. 是为了区分两个 name
        }
回复 使用道具 举报
楼上正解。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马