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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不去会死 中级黑马   /  2014-6-11 09:28  /  1424 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不去会死 于 2014-6-13 07:32 编辑

  1. public class Test{
  2.         public static void main(String[] args){
  3.                 Person p = new Person();
  4.                 p.setAge(40);
  5.                 p.person();
  6.         }
  7. }
  8. class Person
  9. {
  10.        private int age;

  11.        public void setAge(int a)
  12.       {
  13.               age = a;
  14.        }
  15.         public int getAge()
  16.        {
  17.               return age;
  18.        }
  19.       void person()
  20.       {
  21.              System.out.println("age" + "=" + age);
  22.        }
  23. }
复制代码


13 个回复

倒序浏览
楼主是什么问题呐,
回复 使用道具 举报
后面的代码居然没有显示,为什么啊?
public class Test{
      public static void mian(String[] args){
             Person p = new Person;
             p.setAge(40);
      }
}
运行结果:40
为什么主函数调用setAge方法,却能够返回getAge中的age,但是getAge方法并没有设置形参,谁能给一个解释一下吗?
回复 使用道具 举报
姿_`态 发表于 2014-6-11 09:32
楼主是什么问题呐,

刚才不知道为什么后面的代码没有显示,现在后面补充了,求解释
回复 使用道具 举报
整个类中成员变量age是同一个,太糗了:shutup:
回复 使用道具 举报
你连speak()方法都没有调用,居然还能输出运行结果。new person()还有括号,算是默认构造函数
回复 使用道具 举报

getter 方法不能有任何参数,始终返回一个值。
setter 方法始终带一个参数,从不返回任何值。
getter 和 setter 方法能够以直接访问的方式访问类属性
调用 getter 和 setter 方法时,方法名后面不带任何括号或参量。调用 getter 和 setter 方法与按相同的名称调用属性类似
回复 使用道具 举报
Class Person
{
       private Int age;

       public void setAge(int a)
      {
              this.age = a;
       }
        public int getAge()
       {
              Return age;
       }
       void speak()
      {
             System.out.println(“age”+age);
       }
}
public class Test{
      public static void mian(String[] args){
             Person p = new Person();
             p.setAge(40);
      }
}
这个是通过set方法给成员变量赋值由get方法获取值吧!!
回复 使用道具 举报
之所以能够返回,是因为return语句,return 的是age ,age成员变量,所以不需要参数,因为就算有参数你也没有操作它,只是返回了而已,所以不需要参数,你得到的结果肯定是调用了speak()方法,那有一个输出语句,把return的东西输出了,所以就显示了
回复 使用道具 举报
四顾行者 发表于 2014-6-11 10:38
你连speak()方法都没有调用,居然还能输出运行结果。new person()还有括号,算是默认构造函数 ...

额,大意了,那个void我应该去掉的
回复 使用道具 举报
你这代码能编译通过?
1、建立对象的时候Person后面的括号没了。
2、别说出的结果对不对,你连speak()方法都没有调用。
3、编译器 看的懂 Int、Return这样的词?java是区分大小写的。
4、定义的是age,setAge()方法中调用的是Age,这两个根本不是一个函数。
----------------------------------------------
赶紧看视频去....这些错误也太基础了,根本不可能编译,别说出结果了
回复 使用道具 举报
a6217815 发表于 2014-6-11 10:54
你这代码能编译通过?
1、建立对象的时候Person后面的括号没了。
2、别说出的结果对不对,你连speak()方法 ...

这个我确实没有试过,我是在Word中打出来并复制过来的,很多它自动调整到大写了,本来只是想问一下原理,结果出了这么多小问题,我从新整理一下代码
回复 使用道具 举报
不去会死 发表于 2014-6-11 11:03
这个我确实没有试过,我是在Word中打出来并复制过来的,很多它自动调整到大写了,本来只是想问一下原理, ...

哦 这样啊,那就先不管大小写问题。还是建立对象的时候的括号补上,然后你在主函数中调用speak方法  p.speak(),这样才能输出 age40,调用getAge方法 p.getAge()就会输出 40。
只调用一个p.setAge()只能赋值不能返回结果的..
回复 使用道具 举报

  1. public class Test{
  2.         public static void main(String[] args){
  3.                 Person p = new Person();//创建了person对象,你就可以使用person中的set,,get方法,
  4.                 p.setAge(40);这里你给他传值为40;
  5.                 p.person();这里你调用的是person中的构造方法,所以那就会执行构造方法中的输出语句,  System.out.println("age" + "=" + age);
  6.         }
  7. }
  8. class Person
  9. {
  10.        private int age;

  11.        public void setAge(int a)
  12.       {
  13.               age = a;
  14.        }
  15.         public int getAge()
  16.        {
  17.               return age;
  18.        }
  19.       void person()
  20.       {
  21.              System.out.println("age" + "=" + age);
  22.        }
  23. }
复制代码


楼主的问题是:为什么主函数调用setAge方法,却能够返回getAge中的age,但是getAge方法并没有设置形参
---------是因为return语句,return 的是age 的成员变量;他就是返回一个数值的作用,记住就好啊,,,,,
嘻嘻嘻。。。。。技术分啊  啊 {:3_51:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马