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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小飞龙 初级黑马   /  2012-7-19 16:24  /  2690 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class PersonAge
{
        private int age
        public void setAge (int a)
        {
                if (a > 0 && a< 150)
                {        age = a;
                        speak();
                }
                else
                        System.out.println("Wrong age");
        }
        void speak()
        {
                System.out.println("age="+age);
        }
        public int getAge ()
        {
                return age;
        }
}
不知道这个getAge()方法有什么用呢?跟setAge有什么关系?

点评

这位童鞋,整个版面都是你的帖子了,而且你好歹也问点有点技术含量的问题咯....  发表于 2012-7-19 17:57

9 个回复

倒序浏览
这是封装的原理,一个实体中封装了类的对象,类对外提供接口,外部类可以通过getXXX()方法,来获取对象的该属性,同样,可以通过setXXX()方法,对对象的相应属性进行赋值。
回复 使用道具 举报
由于age被private修饰,根据修饰符的访问权限,在PersonAge类外,是无法直接使用age成员。而这

时可以通过调用getAge()方法来获得age(getAge()是public修饰
回复 使用道具 举报
  1. class PersonAge

  2. {

  3.         private int age//私有化, 只能被类内部的方法访问

  4.         public void setAge (int a)//对外提供的方法,使外部能够对私有成员进行操作

  5.         {

  6.                 if (a > 0 && a< 150)

  7.                 {        age = a;

  8.                         speak();

  9.                 }

  10.                 else

  11.                         System.out.println("Wrong age");

  12.         }

  13.         void speak()

  14.         {

  15.                 System.out.println("age="+age);

  16.         }

  17.         public int getAge ()//对外提供的方法,使外部能够对私有成员进行操作

  18.         {

  19.                 return age;

  20.         }

  21. }



复制代码
在PersonAge类中,成员age进行了私有化(private),而用private声明的属性或方法只能在其类的内部被调用,而不能再类的外部被调用。
而PersonAge类中的setAge()和getAge()方法,是对外提供的方法,以供外部程序对成员age进行操作,setAge()是对成员age进行赋值操作,
而getAge()是对成员age进行读取操作,以便于调用age的值在外部进行运算。
这里setAge()和getAge()你可以看做是银行中存和取的关系。
回复 使用道具 举报
本帖最后由 黑马振鹏 于 2012-7-19 16:42 编辑

private int age  age设置为私有,需要提供两个方法对其进行设置和获取。直接看set和get一个是设置,一个是得到,所以方法名字就确定了setAge和getAge;
设置值需要给方法一个参数,所以定义为public void setAge(int a) ;获取方法直接获取成员的值,需要将返回类型设置成与定义时相同,即为public int getAge()
回复 使用道具 举报
个么这是封装方面的知识
把自己的东西封装到自己内部,不让外部访问,只能通过自己才能去访问这个你想访问的东西
回复 使用道具 举报
  1. class PersonAge
  2. {
  3. private int age
  4. public void setAge (int a)//上面把age私有化了,这里提供对应访问age的方式
  5. {
  6. if (a > 0 && a< 150)
  7. { age = a;
  8. speak();
  9. }
  10. else
  11. System.out.println("Wrong age");
  12. }
  13. void speak()
  14. {
  15. System.out.println("age="+age);
  16. }
  17. public int getAge ()//返回age的值,因为上面你判断完毕之后要返回值,程序才能继续运行下去
  18. {
  19. return age;
  20. }
  21. }
复制代码
首先,set和get不一定说非得这么写,只是为了书写规范,set get一个成员变量,通常都会对应两个访问方式,一个set一个get
这个是函数的封装,你封装以后你需要对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句
不知道这个getAge()方法有什么用呢?
将age私有化以后,类以外即使建立的对象也不能直接访问,就需要在Person类中,提供对应访问age的方式,这里的set和get是与之对应的对外访问方式
跟setAge有什么关系?
从字面上来说是没什么关系的,这里你也可以用其他的来表示,只是书写规范,从意义上来说,就是上面说的,对外提供访问方式,getAge就是返回这个值

回复 使用道具 举报
  1. public class Age{
  2.       private int age;
  3. }
复制代码
回复 使用道具 举报
赵聪 初级黑马 2012-7-19 17:45:32
9#
java程序一般将A类的属性修饰符设置为private,这是为了更好的封装数据。要想在B类里引用该属性,就可以在A类里定义修饰符为public的set,get方法以设置和获取private型的属性值
回复 使用道具 举报
首先这个代码 ,你想问的也是关于get和set的方法问题
get  set  方法
set和get方法一般是用来给类的成员变量赋值的,由于类的成员变量一般会声明为private私有的,其他的类是不能直接访问private成员变量的,所以为了在除此类以外给该类的成员变量赋值或者取值,只有用声明为public的set和get方法来实现,set和get方法是用于封装的 所以一般只在private中用 如果不是在private中用也可以,代码也是可以执行的 get 是用来调用的  set是用来赋值的。


你这个代码 有set就应该有get 因为你用set赋值之后,不用get调用,怎么会有参数值呢,没有值肯定是不输出的阿.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马