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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙雯 中级黑马   /  2014-8-21 16:18  /  2528 人查看  /  28 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    还在学习面向对象,正看到封装性这块儿。没弄明白将属性私有之后,setXXX( )和getXXX( )是必备的还是怎么地?有什么作用?是不是对每一个私有的属性都需要这样配置?
    现在这儿谢过各位路过的大神。感谢感谢~~~

28 个回复

正序浏览
hsy 发表于 2014-8-22 22:14
我再补充一点哈,有时候只用get,set可以用有参构造替代
测试类里面可以这样写:如Student的测试类
public ...

什么叫做用有参构造代替get和set?既然我的get和set都是必须写的,为什么要说用有参构造来代替呢?这样算是代替呢?实在是一头雾水弄不明白~~~
回复 使用道具 举报
孙雯 发表于 2014-8-24 21:41
哇哦。。。万分感谢啊,你真棒!

不客气,都是讨论,你报了12号的班吗?
回复 使用道具 举报
SmallRooker 发表于 2014-8-23 21:38
我绝的你先要明白为什么定义成 private 类型比较好 本人这样认为的:

定义私有变量原因:是提供本类直接访 ...

哇哦。。。万分感谢啊,你真棒!
回复 使用道具 举报
java_dream 发表于 2014-8-23 22:09
这个倒不用,在MyEclipse中敲代码时,一般会有代码提示,在显示提示时就不要直接按回车键输入,要一个一个 ...

O(∩_∩)O谢谢~~~
回复 使用道具 举报
顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
属性私有化之后,本类以外就访问不到这个属性了,如果想要修改或者使用就得提供一个修改或者使用的方法,要不然外部无法使用这个属性...
回复 使用道具 举报
这个倒不用,在MyEclipse中敲代码时,一般会有代码提示,在显示提示时就不要直接按回车键输入,要一个一个字母地敲,这样才能熟练
回复 使用道具 举报 1 0
我绝的你先要明白为什么定义成 private 类型比较好 本人这样认为的:

定义私有变量原因:是提供本类直接访问,但不支持对外访问时,定义私有变量。而且私有变量是受到保护的,如果定义一个对外访问的变量就可能产生对数

据的不确定性。而且在这个私有变量有时候又不得对外提供访问权限,而私有变相是没办法对外直接访问,所以就提供函数(方法)来进行封装,然后对外进

行交互访问。这样就有set和get方法。

您提问的是是否一定要用到这两个方法 :我的回答也是Yes 。因为:提高了代码的安全性,提高了代码的阅读性。
还有一种方法是也可以初始化私有变量,那就是利用对象的 构造函数。鉴于您还没徐u恶习到这里我就不在往下继续说了。

所以建议可以灵活掌握代码,理解原理,然后在正确的情况下写代码,然后提高自己对代码的累计和理解。加油!


回复 使用道具 举报

利用private修饰的变量,那么在其作用域类外部无法直接调用,为了能让外部调用可以设置set和get方法。
回复 使用道具 举报
java_dream 发表于 2014-8-23 21:12
要多敲代码,代码量上来,就只是为什么了。
我刚学面向对象的时候也有过这样的疑惑,如构造器已经初始化了 ...

嗯嗯~~~那再问一个哈:在MyEclipse中写了的程序,要不要在纸上本子上再给写写?
回复 使用道具 举报
lhtwm1 发表于 2014-8-22 14:15
黑马币换的。
6黑马币=1技术分

黑马币也有上限?难怪。。。谢谢分享啊O(∩_∩)O~
回复 使用道具 举报
要多敲代码,代码量上来,就只是为什么了。
我刚学面向对象的时候也有过这样的疑惑,如构造器已经初始化了属性,为什么还要写getXXX()、setXX()方法呢,
总之多敲代码,代码量和经验多了就理解了
回复 使用道具 举报
hsy 发表于 2014-8-22 22:14
我再补充一点哈,有时候只用get,set可以用有参构造替代
测试类里面可以这样写:如Student的测试类
public ...

O(∩_∩)O谢谢
回复 使用道具 举报
hsy 中级黑马 2014-8-22 22:14:35
16#
孙雯 发表于 2014-8-21 17:42
先谢了,虽然自己还是没有理解。但记着先咯~

我再补充一点哈,有时候只用get,set可以用有参构造替代
测试类里面可以这样写:如Student的测试类
public class StudentTest {
        public static void main(String[] args) {
                Student s = new Student("张三",20);
               
                System.out.println(s.getName()+"-------"+s.getAge());
               
               
        }
}
回复 使用道具 举报 2 0
孙雯 发表于 2014-8-22 14:07
哇哦,你也是?那可不可以问个题外话:你技术分怎么得的?我才一分。之后就什么都木有了~~~ ...

黑马币换的。
6黑马币=1技术分

设置里有      每天有固定的黑马币,不能重复回帖,否则没有黑马币只有经验。
                  每天黑马币有上线,貌似6个吧。

回复 使用道具 举报 1 0
lhtwm1 发表于 2014-8-22 00:02
我也刚看到这 一头雾水啊     迷茫中

哇哦,你也是?那可不可以问个题外话:你技术分怎么得的?我才一分。之后就什么都木有了~~~
回复 使用道具 举报
Huberry 发表于 2014-8-22 00:46
private修饰类中成员,表示此成员只能由本类调用,如果外部需要访问这个成员,就需要提供访问这个成员的入 ...

感谢感谢!!!
回复 使用道具 举报
本帖最后由 bbdeyouxang 于 2014-8-22 13:05 编辑

等学到ssh的时候,定义pojo或者注入的时候,就知道这么写是干什么用的了,没写的setter和getter的话框架就报错了。
回复 使用道具 举报
{:3_48:}你需要知道的是private protected public friendly 修饰符的作用域。private 属性后,别的类是不能访问的。要是让别的类可以访问此属性,你必须在本类中定义方法,去获取该属性,所以不一定非要setXXX();getXXX();你写别的方法也可以。这样在别的类中就可以调用本类的对象.XXX方法获取到该属性。本人愚昧,只能归纳这些。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马