黑马程序员技术交流社区

标题: 关于类中的get***和set*** [打印本页]

作者: 小飞龙    时间: 2012-7-19 16:24
标题: 关于类中的get***和set***
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 16:27
这是封装的原理,一个实体中封装了类的对象,类对外提供接口,外部类可以通过getXXX()方法,来获取对象的该属性,同样,可以通过setXXX()方法,对对象的相应属性进行赋值。
作者: 山水游客    时间: 2012-7-19 16:29
由于age被private修饰,根据修饰符的访问权限,在PersonAge类外,是无法直接使用age成员。而这

时可以通过调用getAge()方法来获得age(getAge()是public修饰
作者: 陈冲    时间: 2012-7-19 16:38
  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:39
本帖最后由 黑马振鹏 于 2012-7-19 16:42 编辑

private int age  age设置为私有,需要提供两个方法对其进行设置和获取。直接看set和get一个是设置,一个是得到,所以方法名字就确定了setAge和getAge;
设置值需要给方法一个参数,所以定义为public void setAge(int a) ;获取方法直接获取成员的值,需要将返回类型设置成与定义时相同,即为public int getAge()

作者: 王飞    时间: 2012-7-19 16:44
个么这是封装方面的知识
把自己的东西封装到自己内部,不让外部访问,只能通过自己才能去访问这个你想访问的东西
作者: 马州州    时间: 2012-7-19 16:48
  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就是返回这个值


作者: 郑明君    时间: 2012-7-19 17:18
  1. public class Age{
  2.       private int age;
  3. }
复制代码

作者: 赵聪    时间: 2012-7-19 17:45
java程序一般将A类的属性修饰符设置为private,这是为了更好的封装数据。要想在B类里引用该属性,就可以在A类里定义修饰符为public的set,get方法以设置和获取private型的属性值
作者: -_青春,就该努    时间: 2012-7-20 14:30
首先这个代码 ,你想问的也是关于get和set的方法问题
get  set  方法
set和get方法一般是用来给类的成员变量赋值的,由于类的成员变量一般会声明为private私有的,其他的类是不能直接访问private成员变量的,所以为了在除此类以外给该类的成员变量赋值或者取值,只有用声明为public的set和get方法来实现,set和get方法是用于封装的 所以一般只在private中用 如果不是在private中用也可以,代码也是可以执行的 get 是用来调用的  set是用来赋值的。


你这个代码 有set就应该有get 因为你用set赋值之后,不用get调用,怎么会有参数值呢,没有值肯定是不输出的阿.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2