黑马程序员技术交流社区

标题: set 和 get两个啥关系,啥区别啊? [打印本页]

作者: Adjin    时间: 2014-7-5 10:10
标题: set 和 get两个啥关系,啥区别啊?
class Person
{
        private int age;
        public void setAge(int a)
        {
                age=a;
        }
        public int getAge()
        {
                return age;
        }
}
class PersonDemo
{
        public static void main (String [] args)
        {
                Person p=new Person ()
                p.setAge=20;
       
        }
}
set和get同时出现,两者都什么功能,有什么联系啊?
作者: 燿陚√揚葳    时间: 2014-7-5 10:23
set设置,get获取,通常类中的变量都是私有的就像你写的age,既然是私有的那么其他类就不能直接访问age了
所以这时候就需要有一些方法提供访问这些私有的属性,就用Set来设置,用get获取到这个值
作者: Adjin    时间: 2014-7-5 10:29
有p.setAge(20),那有没有p.getAge()啊?都啥意思?
作者: 我为你着迷    时间: 2014-7-5 10:30
一个是设置 一个是获取  一般成员变量被私有化以后呢  要对外提供对应的方法进行访问  所以出现了set和get,就是设置变量和获取变量。
作者: Darkhorse′Xa    时间: 2014-7-5 10:35
楼上的说的都对
作者: 卞新浩    时间: 2014-7-5 10:37
对私有成员设置和访问的一种方法
作者: 燿陚√揚葳    时间: 2014-7-5 10:39
Adjin 发表于 2014-7-5 10:29
有p.setAge(20),那有没有p.getAge()啊?都啥意思?

   public void setAge(int a)
        {
                age=a;
        }
你看这个方法,当你调用这个方法时,就要给他传递一个int类型的数据,因为在其他类中你是无法访问到age这个属性的,而用Set方法来设置这个属性

同样的你也无法获取到age这个值所以要用p.getAge();来获取到这个值,你看get方法不是return age返回age了吗,所以用get方法可以获取到age

你可以理解为Set就是给属性赋值,赋值之后你要得到这个值吧,就用get来获取值

作者: Adjin    时间: 2014-7-5 10:40
我为你着迷 发表于 2014-7-5 10:30
一个是设置 一个是获取  一般成员变量被私有化以后呢  要对外提供对应的方法进行访问  所以出现了set和get ...

是不是我想使用age了,那么我就只能用p.getAge();就能得到age的值了,
作者: OCTSJimmy    时间: 2014-7-5 10:52
Adjin 发表于 2014-7-5 10:40
是不是我想使用age了,那么我就只能用p.getAge();就能得到age的值了,

是的

由于age是私有变量,除非用反射,否则是拿不到的,只能通过内部类提供的方法来获取或者重新指定age的值。
作者: Adjin    时间: 2014-7-5 10:58
燿陚√揚葳 发表于 2014-7-5 10:39
public void setAge(int a)
        {
                age=a;

我如果想打印age
就得是System.out.println("age="+getAge());了,对吗?
作者: 燿陚√揚葳    时间: 2014-7-5 11:03
Adjin 发表于 2014-7-5 10:58
我如果想打印age
就得是System.out.println("age="+getAge());了,对吗?

是的p.getAge();
作者: amtest    时间: 2014-7-5 11:21
hoho                          
作者: wuguiye    时间: 2014-7-5 11:56
一个给成员变量赋值,一个取值
作者: 马到成功2014    时间: 2014-7-5 12:06
get和set就是公有方法,来访问你私有属性,
就字面意思,一个取值,一个设值。

作者: 我为你着迷    时间: 2014-7-5 12:44
Adjin 发表于 2014-7-5 10:40
是不是我想使用age了,那么我就只能用p.getAge();就能得到age的值了,

嗯 是的   亲  
作者: 醉、倾鯎    时间: 2014-7-5 15:58
白话一点说,set是门槛,传入的数据必须能通过门槛才能修改private修饰的变量,
可以在set中做判断,如果传入的修改值不在你设置允许的范围内,你可以选择不让private修饰的变量接收,
而get是调取显示private修饰的变量。
以上是针对你这段代码的解释
作者: alexsoon    时间: 2014-7-5 16:01
私有变量无法访问,通过对外提供方法来访问内部私有成员,暴力反射也可以。
作者: 醉、倾鯎    时间: 2014-7-5 16:01
class Person {
        private int age;

        public void setAge(int a) {
                age = a;
        }

        public int getAge() {
                return age;
        }
}

class PersonDemo {
        public static void main(String[] args) {
                Person p = new Person();
                p.setAge(20);
                System.out.println(p.getAge());

        }
}
你代码在传入参数的地方还有问题,不能用等号,应该是括号
作者: android0276    时间: 2014-7-5 17:00
这是最简单的东西了。
作者: 青程    时间: 2014-7-5 21:20
其实你这个代码可以简化的




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