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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Adjin 中级黑马   /  2014-7-5 10:10  /  1536 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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同时出现,两者都什么功能,有什么联系啊?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

19 个回复

倒序浏览
set设置,get获取,通常类中的变量都是私有的就像你写的age,既然是私有的那么其他类就不能直接访问age了
所以这时候就需要有一些方法提供访问这些私有的属性,就用Set来设置,用get获取到这个值

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
有p.setAge(20),那有没有p.getAge()啊?都啥意思?
回复 使用道具 举报
一个是设置 一个是获取  一般成员变量被私有化以后呢  要对外提供对应的方法进行访问  所以出现了set和get,就是设置变量和获取变量。
回复 使用道具 举报
楼上的说的都对
回复 使用道具 举报
对私有成员设置和访问的一种方法
回复 使用道具 举报
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来获取值
回复 使用道具 举报
我为你着迷 发表于 2014-7-5 10:30
一个是设置 一个是获取  一般成员变量被私有化以后呢  要对外提供对应的方法进行访问  所以出现了set和get ...

是不是我想使用age了,那么我就只能用p.getAge();就能得到age的值了,
回复 使用道具 举报
Adjin 发表于 2014-7-5 10:40
是不是我想使用age了,那么我就只能用p.getAge();就能得到age的值了,

是的

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

我如果想打印age
就得是System.out.println("age="+getAge());了,对吗?
回复 使用道具 举报
Adjin 发表于 2014-7-5 10:58
我如果想打印age
就得是System.out.println("age="+getAge());了,对吗?

是的p.getAge();
回复 使用道具 举报
hoho                          
回复 使用道具 举报
一个给成员变量赋值,一个取值
回复 使用道具 举报
get和set就是公有方法,来访问你私有属性,
就字面意思,一个取值,一个设值。
回复 使用道具 举报
Adjin 发表于 2014-7-5 10:40
是不是我想使用age了,那么我就只能用p.getAge();就能得到age的值了,

嗯 是的   亲  
回复 使用道具 举报
白话一点说,set是门槛,传入的数据必须能通过门槛才能修改private修饰的变量,
可以在set中做判断,如果传入的修改值不在你设置允许的范围内,你可以选择不让private修饰的变量接收,
而get是调取显示private修饰的变量。
以上是针对你这段代码的解释
回复 使用道具 举报
私有变量无法访问,通过对外提供方法来访问内部私有成员,暴力反射也可以。
回复 使用道具 举报
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());

        }
}
你代码在传入参数的地方还有问题,不能用等号,应该是括号
回复 使用道具 举报
这是最简单的东西了。
回复 使用道具 举报
其实你这个代码可以简化的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马