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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王怡然 黑马帝   /  2012-4-24 00:19  /  3561 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天敲代码的时候发现了好像老师将的课程里面面向对象的时候,貌似都有get,set方法,set是设置值得,get是获取值得,我现在困惑的时候get到底返回给谁,是对象吗?还是类?
set是给静态成员变量赋值的,这个我知道,可是get我真的很困惑,这个get是必须存在的吗?

11 个回复

正序浏览
本帖最后由 真真姐 于 2012-10-21 14:44 编辑

给你个简单的例子啊,实际上你是没有理解他们的作用! 这里给出了一个误区!
  1. class A
  2.             {
  3.                 private int m = 100;                     // 根据访问权限是私有属性,其他类不能访问
  4.             }
复制代码
误区:你可能会说:我可以用类的实例试试,看下面
  1. public class Extend
  2.         {
  3.                 public static void main(String[] args)
  4.                         {
  5.                                 A a = new A();
  6.                                 System.out.println(a.m);  // 这里会报错,因为其他类里面根本获取不到, 所以想要获取A中的m ,就需要在A中加上get set方法
  7.                         }
  8.       }
复制代码
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
你的问题 get给谁,自然是哪里需要获取m就get给谁,就像是我这里需要打印m我这里就用到了get方法,详细看代码
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1.      public int getm()                                   //定义了get set 方法注意他们的格式
  2.                         {
  3.                                         return m;                  // 看到了吧get方法 就是把m返回</font>
  4.                         }
  5.                 public void setm(int m)
  6.                         {
  7.                                         this.m = m;
  8.                         }
  9. --------------------------------------------------------------------------
  10. public class Extend
  11.         {
  12.                 public static void main(String[] args)
  13.                         {
  14.                                 A a = new A();
  15.                                 System.out.println(a.getm());    // 这样就能对A中的m进行操作了
  16.                         }
  17.         }
复制代码
回复 使用道具 举报
一般对象的属性设置为私有的,然后生成get和set方法是给其他对象调用的,不然只能在本类中使用的话,不利于程序的开发,get方法的返回值是跟属性的类型有关的,如果属性为int类型的,ge,调用get方法返回的也是int类型的,
回复 使用道具 举报
把类的成员变量声明为private的,其它类不能直接访问该成员变量,只能通过声明为public的get和set方法来获取和修改该成员变量的值。这是一种设计模式。
在eclipse中可以把鼠标移到成员变量名上,点右键,选“Source”,然后选“Generate Getters and Setters”,可以快速添加该成员变量的get和set方法。
回复 使用道具 举报
金超 中级黑马 2012-4-24 15:58:40
9#
用代码说明
public class Person {
     private String name;
     private int age;
     private String ID;
       
       
        public int getAge() {
                return age;
        }
        public String getID() {
                return ID;
        }
        public String getName() {
                return name;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public void setID(String iD) {
                ID = iD;
        }
     public void setName(String name) {
                this.name = name;
        }
     
}
3个成员变量都是私有的,不能直接被别的类访问。
错误的做法 Person p = new Person();
                            p.name = "jinchao";
                            String minzi = p.name;
正确的做法 Person p = new Person();
                            p.setName("jinchao");
                            String minzi = p.getName();
要想取得一个对象的私有成员变量,只有通过getName()方法才能得到,它返回的是这个对象的成员变量的值。
回复 使用道具 举报
java语言是面向对象的语言,为了保证强内聚,弱耦合,对类中的属性进行私有化,保证数据的封装性。但是如同售后维修一样,维修人员会被厂商告知怎样检查车子的零件,和维修车子的零件。于是,厂商提供了get和set方法。
get是获取当前对象属性的值,对于这个值,谁需要返回给谁
get与set都是面对需求而产生,当不需要时,我们就不必要浪费时间去写。
回复 使用道具 举报
本帖最后由 邱俊杰 于 2012-4-24 01:54 编辑
  1. public class Pad
  2. {

  3.         private int a;
  4.         public int getA()
  5.         {
  6.                                //,我现在困惑的时候get到底返回给谁,是对象吗?还是类?可是get我真的很困惑,这个get是必须存在的吗?
  7.                 return a;  //这个return返回的是对象a,这里是封装对象、一般都是成对出现、但是get也可以不写
  8.         }
  9.         public void setA(int a)
  10.         {
  11.                 this.a = a;//这里是给a赋值哥们懂了吧。
  12.         }
  13. }
复制代码
回复 使用道具 举报
楼上几位估计都解释得有点估计对新手没帮助,我来试试看能给你解释清楚不!!
首先你要搞清楚什么是封装!!!为什么要封装,private用了有什么用》??
第一:为什么封装肯定你应该有自己的看发。(这不多讲)那么第二:什么是封装,关于定义书上都有,我要给你说的是:函数本身就是最小的封装体。------------------这句话很重要,你一定要记住!!!!
那么直接带到第三个问题了:private有什么用,
我们知道对于一个类,有2中东西组成:一个是特性(就是属性类的东西,不是函数的都是属性)二的个是函数了,既然函数本身就是封装体了,那么就剩下类的另外个“属性”没封装了,(那怎么能行???),所以最简单的方法就是把属性完全用private封装掉(private的意思是:只有自己这个类成员才能调用,离开这个类什么都人都不能用!但你的属性还是要用啊,所以:最后就出现了一半属性会弄个get函数和set函数来让其他类能访问。但是你要知道get,set都是函数,函数本身就是封装体,所以就严密了。所有类的东西都被封装了,完美了。。。。。。。。。。。。。你了解了这些然后才知道为什么有get和set函数。

那么get是把你类的本身属性直接赋予给调用者,调用者肯定是对象。那么你的问题就明白了对象获得了get函数所封装的属性值。
同时你还没弄清楚对象和类。简单举例给你说明类和对象关系:类如果是 “人”这个类,那么对象就是“你”或则“我”或则任何一个人。相当于类吧所有这一种类的对象的相同特征和行为全部归类成了一个类。
希望能帮助到你!!!!!!!
回复 使用道具 举报
老师在课堂上说了呀!
如果你给name设置private的话
外面就用set方法设置值,get获取值。。。
但是如果你外面的类中不需要获取值的话,你可以不用定义get方法
同理如果不需要设置值的话,也可以不用定义set方法
回复 使用道具 举报
set方法是为对象中的属性赋值
get方法是从对象中获取属性值
例如:
class LiZi{
private String shuXing1;
private String shuXing2;
public LiZi(){
}

public void setShuXing1(String shuXing1){
   this.shuXing1=shuXing1;
}
public String getShuXing1(){
  return this.shuXing1;
}
public void setShuXing2(String shuXing2){
   this.shuXing2=shuXing2;
}
public String getShuXing2(){
  return this.shuXing2;
}
public static main(String[] args){
   LiZi liZi=new LiZi();
   liZi.setShuXing1("这是属性1");
   liZi.setShuXing2("这是属性2");
   System.out.println(liZi.getShuXing1);
   System.out.println(liZi.getShuXing2);

}
}
java的三大特征:继承、封装、多态。属性的get、set方法时用来封装属性的,
把属性设置成为私有的,其他类只能通过get或set来读写该属性,如果把某个属性想设置为只读,那就把set方法设置成私有。
不是只能用在构造器   而是你觉得那里应该用 就可以使用 非常灵活的
回复 使用道具 举报
本帖最后由 黑马我来了 于 2012-4-24 00:28 编辑

  get的值返回给类中的你定义的属性了,不然的的话get怎么取到值。set和get生成的方法都是为你定义的属性生成的方法,才方便你设置和取值。
回复 使用道具 举报
get是给调用者用的~当然一般是对象调用的~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马