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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Student {
        private String name;
        private int age;
        public String getName(){
                return name;
        }
        public String setName(String m){
                name = m;
        }
        public int getAge (){
                return age;
        }
        public int setAge (int a){
                age = a;
        }
}
class StudentTest {
        public static void main(String[] args){
                Student s = new Student();
                s.setName("林青霞");
                s.setAge(23);
                System.out.println(s.getName()+"-------"+s.getAge());
        }
}
C:\Users\a\Desktop

7 个回复

倒序浏览
报错如图

捕获.PNG (3.95 KB, 下载次数: 11)

捕获.PNG
回复 使用道具 举报
不懂,帮顶
回复 使用道具 举报
本帖最后由 huang_bing_hua 于 2016-2-21 19:48 编辑

我自己发现了,在Student类里,因为setAge方法和setName方法并没有明确的返回值,只是赋值操作而已,所以在定义方法的时候,方法名前的返回值数据类型就应该是void。
回复 使用道具 举报
  通过下一个视频的学习,我们会看到上述代码中setAge 和setName方法里局部变量的名称没有做到见名知意,即String m和int a;分别改成name,和age就可以。
  但是此时出现一个问题,那就是有两个name,有两个age。怎么解决局部变量和成员变量名称相同的问题?(专业术语叫做“局部变量隐藏成员变量”)
  java语言便引入this这个关键字 this.name = name;(this的作用就是代表当前类的一个对象)
回复 使用道具 举报
setName 的返回值类型是void 没有返回值 只有get的时候才有返回值 改下就好了 改好了多敲几遍
回复 使用道具 举报
获取名字和年龄应该没有返回值
回复 使用道具 举报
本帖最后由 参禅悟道 于 2016-2-22 10:12 编辑

你把你的两个set方法的类型换成void,你的方法是String和int类型,肯定要返回数据的,如果是void类型就不用返回数据了

QQ截图20160222101018.png (13.11 KB, 下载次数: 10)

QQ截图20160222101018.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马