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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

28 个回复

倒序浏览
private修饰成员,包括成员方法和成员变量,修饰成员变量时需提供对外访问的公共方法,所以set,get是必须的。
回复 使用道具 举报
俩个访问方式,设置setAge  和获取setAge 。需要提供给公用的时候用!
回复 使用道具 举报
hsy 发表于 2014-8-21 17:32
private修饰成员,包括成员方法和成员变量,修饰成员变量时需提供对外访问的公共方法,所以set,get是必须 ...

先谢了,虽然自己还是没有理解。但记着先咯~
回复 使用道具 举报
类里面私有数据,但是有些必须得对外提供调用的方法,不能总是自己用,对外就需要get,set方法,再往后学就知道,javabean主要就是靠set,get来单独整出来的模式,很方便
回复 使用道具 举报 1 0
我也刚看到这 一头雾水啊     迷茫中
回复 使用道具 举报
private修饰类中成员,表示此成员只能由本类调用,如果外部需要访问这个成员,就需要提供访问这个成员的入口。

如果这个成员只在本类内部使用,外部不需要访问此成员(比如类的一些固定的属性,而外部也不需要访问到这个属性),则不需要定义外部访问方法
回复 使用道具 举报 1 0
属性私有是为了更好的封装,禁止在其它类中直接访问,需要通过public修饰的setXXX( )和getXXX( )方法访问private修饰的属性,但setXXX()和getXXX()不是必须的,只不过没有setXXX()和getXXX()就无法在其它类中访问private属性
回复 使用道具 举报
是的哦。

但你要首先搞懂为什么要定义private

然后。
当你对一个类里面的变量定义了private之后,这个变量就被私有了(是不是在说废话:P)
你的问题是—— 私有之后set方法和get方法是否是必备的?

答案是Yes

也许你看到毕老师的一些代码里没有这两个设置,那是因为视频需要节约时间,所以老师不花费时间去写那些重复的代码。
他往往都会再三强调“为了节约时间,XXX我就不写了哈,大伙儿知道就行,开发的时候必须要写啊!”

所以更准确的答案是——

当你在进行实际软件开发的时候,只要在类中定义了private修饰的变量,就一定要在下面对外提供set方法和get方法

目的是你可以在其他类中访问已经被private修饰了的变量。

所以建议是自己在做Test的时候把这两个方法都写上,除了养成代码严谨的习惯以外还可以练习手感~~~


回复 使用道具 举报 2 0
不一定非要get set,你也可以写dedao 、gaibian之类的方法,get set方法其实是为一个更高级的JavaBean操作的一个规范而已,初学者的话不用理他!{:3_47:}
回复 使用道具 举报
{:3_48:}你需要知道的是private protected public friendly 修饰符的作用域。private 属性后,别的类是不能访问的。要是让别的类可以访问此属性,你必须在本类中定义方法,去获取该属性,所以不一定非要setXXX();getXXX();你写别的方法也可以。这样在别的类中就可以调用本类的对象.XXX方法获取到该属性。本人愚昧,只能归纳这些。
回复 使用道具 举报
本帖最后由 bbdeyouxang 于 2014-8-22 13:05 编辑

等学到ssh的时候,定义pojo或者注入的时候,就知道这么写是干什么用的了,没写的setter和getter的话框架就报错了。
回复 使用道具 举报
Huberry 发表于 2014-8-22 00:46
private修饰类中成员,表示此成员只能由本类调用,如果外部需要访问这个成员,就需要提供访问这个成员的入 ...

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

哇哦,你也是?那可不可以问个题外话:你技术分怎么得的?我才一分。之后就什么都木有了~~~
回复 使用道具 举报
孙雯 发表于 2014-8-22 14:07
哇哦,你也是?那可不可以问个题外话:你技术分怎么得的?我才一分。之后就什么都木有了~~~ ...

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

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

回复 使用道具 举报 1 0
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
hsy 发表于 2014-8-22 22:14
我再补充一点哈,有时候只用get,set可以用有参构造替代
测试类里面可以这样写:如Student的测试类
public ...

O(∩_∩)O谢谢
回复 使用道具 举报
要多敲代码,代码量上来,就只是为什么了。
我刚学面向对象的时候也有过这样的疑惑,如构造器已经初始化了属性,为什么还要写getXXX()、setXX()方法呢,
总之多敲代码,代码量和经验多了就理解了
回复 使用道具 举报
lhtwm1 发表于 2014-8-22 14:15
黑马币换的。
6黑马币=1技术分

黑马币也有上限?难怪。。。谢谢分享啊O(∩_∩)O~
回复 使用道具 举报
java_dream 发表于 2014-8-23 21:12
要多敲代码,代码量上来,就只是为什么了。
我刚学面向对象的时候也有过这样的疑惑,如构造器已经初始化了 ...

嗯嗯~~~那再问一个哈:在MyEclipse中写了的程序,要不要在纸上本子上再给写写?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马