Java学习笔记(类的可见性) http://blog.csdn.net/hawksoft/article/details/8453637
来源:互联网 发布:oppoa209软件下载 编辑:程序博客网 时间:2024/05/21 10:10
Java学习笔记(类的可见性)
分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
1)类的可见性:public;友好的(无关键字);protected;private;
public:公开类,在包内,包外都可见,是可见性级别最高的;
友好的:也是默认的安全级别,包外不可见,包内可见.用在内部类同protected级别相同.
protected:保护级,只能用于内部类.对类及子类(包内子类,包外子类不可见)和包内其它类可见.
private:私有级,只能用于内部类,只对类本身可见。
类的可见性还是比较复杂,特别是内部类嵌套后,但基本规则还是上面所述,因此建议在写类时,如果嵌套,
不要超过2层,即只要嵌套一层即可。这样处理比较简单,没必要多次多可见性嵌套把事情弄复杂。
下面是示例代码:
- public class MyClass02 {
- //保护级对相同包中子类和友好类可见
- protected class MyClass03{
- }
- //下面的类只对本类可见,在类外无法访问呢.
- private class MyClass04{
- }
- //同protected.
- class MyClass05
- {
- }
- //对子类可见,包内,包外其它类都可见.
- public class MyClass06
- {
- }
- }
- class MyClass021 extends MyClass02
- {
- MyClass03 theA =new MyClass03();
- MyClass05 the05=new MyClass05();
- }
- class MyClass11
- {
- MyClass03 theA=new MyClass02().new MyClass03();
- }
- //位于另外一个包.该类继承与MyClass02
- class MyClass022 extends MyClass02
- {
- public void Do()
- {
- //MyClass03,MyClass05不可见,下面语句编译有错.
- //MyClass03 theA =new MyClass03();
- //MyClass05 the05=new MyClass05();
- //下面语句可以.
- MyClass06 the6=new MyClass06();
- }
- }
2)类的成员可见性:
public:公共成员,其它类可见(包内,包外都可见),包内包外子类都可见;内部嵌套类可见;
protected:保护级,包内其它类可见,包内包外子类都可见;内部嵌套类可见;
无关键字:友好的,包内其它类可见,但包内包外子类都不可见;内部嵌套类可见;无继承性。
private:私有的,其它类不可访问,但对该类的内部类可见;
另外需要注意的时,内部类可以定义在类的方法里,这个时候的可见性是同作用域密切相关的.一般情况
下建议不要这样去使用类,会增加维护和理解的困难.
0 0
- Java学习笔记(类的可见性) http://blog.csdn.net/hawksoft/article/details/8453637
- C++类的保护成员学习笔记 http://blog.csdn.net/qhs1573/article/details/14109463
- C++ vector 类学习笔记 http://blog.csdn.net/whz_zb/article/details/6827999
- JAVA的包装类 http://blog.csdn.net/hjf19790118/article/details/7081925
- java http://blog.csdn.net/wike163/article/details/6635321
- Redis学习笔记V-VM 虚拟内存 http://blog.csdn.net/zhangjhtt/article/details/6440712
- 【Linux学习笔记】栈与函数调用惯例 http://blog.csdn.net/xiaogugood/article/details/38490663
- cmake 学习笔记(一)http://blog.csdn.net/dbzhang800/article/details/6314073
- tensorflow学习笔记:ConfigProto&GPU(转自http://blog.csdn.net/u012436149/article/details/53837651)
- java lang 包学习 http://blog.csdn.net/wong_judy/article/details/5318560
- Bellman-ford算法的学习http://blog.csdn.net/niushuai666/article/details/6791765
- Java的XML创建、解析文档(转载自http://blog.csdn.net/psyuhen/article/details/7539228)
- Java程序和C程序的相互调用http://blog.csdn.net/yasi_xi/article/details/8437628
- java中接口的定义与实现 http://blog.csdn.net/yjkwf/article/details/7238847
- Java泛型的类型擦除 http://blog.csdn.net/hust_is_lcd/article/details/7875386
- java system.out.printf()的使用方法 http://blog.csdn.net/wangchangshuai0010/article/details/8647503
- 微信的平台搭建java http://blog.csdn.net/gebitan505/article/details/44595265
- Java中Synchronized的用法(原文: http://blog.csdn.net/luoweifu/article/details/46613015 )
- 网易公开课 计算机专业课程
- ubuntu中vim配置
- 【Android】Android自定义ViewGroup
- Java中的==与equals比较。
- broadcastreceiver
- Java学习笔记(类的可见性) http://blog.csdn.net/hawksoft/article/details/8453637
- UVA 10003 Cutting Sticks(区间dp)
- 职场新人半年工作总结
- 白话粒子群算法
- 使用NSURLSession发送HTTP请求报错
- 浅谈SSH框架
- (10.1.8)高保真VS线框图,哪一种交互稿更能清晰准确地描述产品?
- leetcode 17. Letter Combinations of a Phone Number
- 项目六-正弦余弦