private引起的反思
来源:互联网 发布:北航软件学院书记 编辑:程序博客网 时间:2024/04/28 18:13
今天写程序的时候突然遇到这样的问题,在类中定义了如下的变量: private String name;
在其他类中new了一个对象之后,想用对象.name取得这个属性,但是却访问不到,到群里去问,引来的是一片鄙视!!
呵呵,之后自己也感到惭愧,学了这么久Java了,竟然这个还没理解清除,之前总是拿private、public、protected来比,好像是懂了,现在才发现有点笑话的意思。
现在来分析一下我出错的原因吧。我是这样理解的,这个属性是private的,说明只有这个类的对象可以访问,其他外部实例都不能访问。自己理解是这样的,但是发现自己真的是大错特错:首先外部实例不能访问是什么概念?这个类的对象可以访问又是什么概念?“只有这个类的对象可以访问”是导致我理解出错的原因,我是这样想的:对啊,这个属性是私有的,外部不能访问,但是它也是成员变量啊,我new出来的对象当然有这个成员变量了,当然就可以用上面的方式访问了。那么,问你,外部实例不能访问是指什么,是不能用“外部对象.属性”来访问吗?哈哈,好像我是这样理解的,真的是大错特错啊,只要一个类提供了不是private的构造方法,那么任何其他类的实例都可以new出一个对象,进而访问到它的属性,也就是在这个层面上你不可能阻止别人访问你的属性,那么如果不想这个属性被别的对象访问怎么办,办法就是设为private,设成这样了当然就不可能通过"对象.属性"的方式访问了,如果可以访问,设为私有有什么用,这样设的话,如果没有一个pulic的getter方法,即使你得到了类的对象,你也访问不到对象内的属性。
我觉得这个private说成“对外部用户不透明,只能自己拥有”,有点没解释清楚,我觉得这样理解比较好“pirvate说明只能在类中访问,如果你没提供一个访问我的public访问,你永远都不户看到我,即时你拥有外层包装我的对象实例”.
- private引起的反思
- 一个异常引起的反思
- 腾讯与360之间引起的反思
- 一个WCF问题引起的反思
- 一个小玩意引起的反思
- jar包冲突引起的反思
- 由My8848事件引起的网络热潮的反思
- C# 修正DataGrid bug引起的问题及反思
- def文件加PRIVATE引起的编译出错:接口找不到
- C++构造函数嵌套调用的面试题引起的反思
- 由Actvity启动模式之SingleInstance引起的坑的反思
- 《软件自动化测试高级实践》培训之性能测试部分引起的反思
- 职场人生(二):由水壶乱放引起的反思
- 由“左操作数必须为左值”引起的反思
- Private真的Private么
- 反思中国的高等教育
- 新技术的反思
- 上研的反思
- 左连接,右连接,全连接
- POJ 3189 Steady Cow Assignment
- rel='external nofollow'标签对seo的影响
- 2010/11/25
- 安全编程体会
- private引起的反思
- javascript时钟
- 模板方法模式(Template Method)-定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- myeclipse 8.6 注册码
- sql 分页
- 阻止事件默认行为
- Java Map 集合类简介
- 童话
- 网络流SAP算法(转)