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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜桂发 黑马帝   /  2011-9-2 20:59  /  3148 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我是0基础开始接触JAVA的,很想参加很四届的培养.这几天一直在学毕向东老师的0基础视频教程.感觉老师讲课很生动.但因为自己基础太差,有些地方不明白.希望能在这里遇到老师或同学有空时帮忙解答下.谢谢.:loveliness:

对于私有成员的访问方式的get和set我是这样理解的(自己写了一整天的关于类的程序摸索出来的):set可以被相应的构造函数调来为对应的对象设置特定的属性值.它一般不会被其他函数调用.get也可以被构造函数调来以初始化某个对象的属性值.但它还可被对象调来,用来获取某个属性的值.:lol

不知道这个理解对不对,不过目前貌似能这样运用.:)

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

11 个回复

倒序浏览
set 和 get 其实就是个名子 set表示设置 get表示得到 是一个命名的规范
  1. public class Student{
  2.                 private String name;                //姓名
  3.                 private int age;                //年龄
  4.         public Student(String n,int a){                //构造方法
  5.                 this.setName(n);                //利用构造方法调用setName 将n的值传过去
  6.                 this.setAge(a);                //利用构造方法调用setAge 将a的值传过去
  7.         }
  8.         public String getName() {            //任何对象调用了getName方法就会得到name的内容         
  9.                 return name;
  10.         }
  11.         public void setName(String n) {       //n的值传来之后 name就会被指向n的内容
  12.                 this.name = n;
  13.         }
  14.         public int getAge() {
  15.                 return age;
  16.         }
  17.         public void setAge(int a) {
  18.                 this.age = a;
  19.         }
  20. }
复制代码
以上代码中 利用了构造方法 将name=n 将age=a 完成了对这两个属性的初始化操作,而get方法则是谁需要,刚谁调用,比如:
String str = this.getName();//此时调用了get,将get的返回值 传给了str。
[ 本帖最后由 曹文涛 于 2011-09-02  21:32 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-2 21:24:58
藤椅
set, get 都是方法,方法要么被对象调用(非静态方法),要么被类直接调用(静态方法)。被构造函数调用,我不知道行不行,构造函数一般是用来初始化值的。
回复 使用道具 举报
黑马网友  发表于 2011-9-2 21:34:08
板凳
理解不对,对于私有成员,set和get是为外部调用提供特定的通道,如果想获得或修改某个成员,只能使用这两个方法,便于管理,构造方法是类内部定义的,对于类的私有成员具有访问权限,所以构造方法不需要通过调用set和get方法来初始化,虽然调用本身是没有问题的
我说的不敢保证一定正确,有能力的可以解答一下,顺便评价一下我的答案

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-2 21:35:04
报纸
才这么一会功夫,前面就排两个啦
回复 使用道具 举报
黑马网友  发表于 2011-9-3 00:33:57
地板
呵呵,这个问题,如果是刚刚接触Java的话
那么你就只需要知道private和public的区别就可以了

还是先简单回顾下吧:
如果你在一个类的内部定义了一个private类型的变量或方法
那么,就只有在你这个类里面可以使用它,其他的类都是无法直接使用它的
而如果你在一个类的内部定义个了一个public类型的变量或方法
那么无论是在在哪个类里面,就都可以直接使用这个变量或方法了

所以,当你在一个类里面把某个变量定义成private的时候
由于其他的类无法直接使用这个变量
那么如果想要在其他的类里面改变它的值或者获取它的值的话,那该怎么办呢?

很简单,由于在其他的类中可以使用这个类中定义的public类型的方法
所以,如果你想让其他的类改变这个变量的值的话
你就需要在这个类中提供一个public类型的方法,在这个方法中可以改变这个变量的值
这样,当别的类调用这个方法的时候,就改变这个变量的值了
这个方法的名字,[color=Red][b]约定俗成[/b][/color]就是set方法

同理,如果你想要让别的类获取这个变量的值的话
你就同样需要提供一个public类型的方法,在这个方法中可以获取到这个变量的值
这方法的名字,[color=Red][b]约定俗成[/b][/color]也就是get方法

Tips:呵呵,在这里我再啰嗦两句约定俗成的力量吧
所谓的约定俗成,就好像是咱们日常生活中所使用的俗语一样
这样当你说出这个俗语的时候,别人就可以立刻知道你想表达的意思是什么
如果你不这么说虽然也没关系,但是别人就不能一下子就明白你想要表达的意思了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-3 11:53:05
7#

回复 沙发 的帖子

谢谢.和我理解的差不多:lol
回复 使用道具 举报
黑马网友  发表于 2011-9-3 11:56:52
8#

回复 板凳 的帖子

是的,构造函数可以直接初始化对象.我当时遇到的问题是,要求在写类时就给属性设置默认值(通过第一个构造函数来实现了),然后后面又有一个要求在对象被创建时要有自己的初值,这时就要通过另一个构造函数来调来set了.
回复 使用道具 举报
黑马网友  发表于 2011-9-3 11:59:23
9#

回复 地板 的帖子

谢谢,你说的是意义上的理解,不过我是在细节的实现上有问题:loveliness:
回复 使用道具 举报
黑马网友  发表于 2011-9-3 12:00:18
10#

回复 7 # 的帖子

嗯嗯,基本上理解了.谢谢!:lol
回复 使用道具 举报
黑马网友  发表于 2011-9-10 11:57:09
11#
这样做其实也是为了保证类中的域(属性)对外部的隐藏,面对对象编程中,对象自己的属性都一般都由自己负责,不会直接暴露给外部,而是提供了相应的方法,set和get方法就是这样的方法。
而楼主提到的构造方法来调用,从而实现初始化,这自然可以,但我感觉没必要的吧,为什么不直接操作呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马