黑马程序员技术交流社区

标题: 关于类中成员变量set、get方法的使用,求详解 [打印本页]

作者: 刚金波    时间: 2013-4-18 11:20
标题: 关于类中成员变量set、get方法的使用,求详解
本帖最后由 刚金波 于 2013-4-19 10:53 编辑

对于类中变量set、get的使用,有些疑惑,望高手详解下
作者: 易杰    时间: 2013-4-18 13:43
问题太抽象了,建议写段实例代码描述你的问题。。
作者: 李大伟    时间: 2013-4-18 14:35
private :私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。
私有只在本类中有效。
将age私有化以后,类以外即使建立了对象也不能直接访问。
但是人应该有年龄,就需要在Person类中提供对应访问age的方式。
set 和 get 就可以 设置 和获取年龄了,就是为了给类以外的访问 使用年龄
参考这个简单代码:
  1. class Person
  2. {
  3.         private int age;
  4.         public void setAge(int a)
  5.         {
  6.                 if(a>0 && a<130)
  7.                 {
  8.                         age = a;
  9.                         speak();
  10.                 }
  11.                 else
  12.                         System.out.println("feifa age");
  13.         }

  14.         public int getAge()
  15.         {
  16.                 return age;
  17.         }
  18.         private void speak()
  19.         {
  20.                 System.out.println("age="+age);
  21.         }
  22. }

  23. public class PersonDemo
  24. {
  25.         public static void  main(String[] args)
  26.         {
  27.                 Person p = new Person();

  28.                 p.setAge(20);
  29.                 int n = p.getAge();
  30.                 System.out.println(n);
  31.                 p.setAge(-40);
  32.                 //p.speak();
  33.         }
  34. }
复制代码

作者: 乘鱼飞    时间: 2013-4-18 19:22
用get,set修饰的类具有更好的封装性,可重复使用
要求:
(1)类必须声明为public方便外部访问
(2)类中方法必须为 public 修饰方便外部调用
()3属性用 private修饰 为了更好的隐藏 阻止外界对其修改
为了外界能够使用这个类, 提供了get,set方法
set让外界对其设置或修改,get对外返回所需值
如:
public class Student{
        private int id;
        private String name;
        private double score;
        public Student(){};
        public Student(int id,String name,double score)
        {
                this.id=id;
                this.name=name;
                this.score=score;
        }
        public int getId() {
                return id;
        }
        public void setId(int id) {
                this.id = id;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public double getScore() {
                return score;
        }
        public void setScore(double score) {
                this.score = score;
        }

测试类:
public class Test{
public static void main(String[] args) {
Student s=new Student(1,"zs",75.0)
System.out.println(s.getName());//zs
}
}





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