java 类中有几种访问权限_类中成员的访问权限_Java语言程
类中成员的访问权限_Java语言程
4.7.2 类中成员的访问权限
Java将类中成员(成员变量和成员方法)的访问权限(可见性)划分为4种情况,按照访问权限的范围大小从小到大列出如下。
·私有(private)成员:仅在本类内中的代码可访问它。
·默认(无修饰符)成员:在同一包内中的代码可访问它。
·保护(protected)成员:在同一包内及其子类(不同包)中的代码可访问它。
·公共(public)成员:在所有包内中的代码可访问它。
1.私有(private)成员
类中修饰为private的实例变量和实例方法,只能被这个类本身的方法访问,在类外不能通过变量名或方法名访问它。
类中的实例变量一般修饰为private,并通过public修饰的set方法和get方法设定或读取private实例变量的值。
类中的一些辅助方法,因为不属于该类向外界提供的服务,因此修饰为private。
【例4-25】 类Circle中私有成员的访问。
如果一个类的构造方法修饰为private,表明其他类不能通过这个构造方法生成该类的实例。如果想生成该类的实例,可定义一个静态方法,在该静态方法中,创造该类对象(即引用这个私有构造方法),并返回对象的引用值。这样,就能通过引用这个静态方法间接地生成一个实例。
【例4-26】 类Circle中私有构造方法的访问。
2.默认(无修饰符)成员
例4-4和例4-23的类Circle中的实例变量radius和实例方法getArea()、getPerimeter()前都没有修饰符,而类Circle和类Ex4_4在一个包中。因此,在类Ex4_4中可以引用实例变量radius和实例方法getArea()、getPerimeter()。
3.保护(protected)成员
类中修饰为protected的成员可以被这个类本身、同一个包中的其他的类以及其他包中的子类访问。(www.guayunfan.com)
如果一个类有子类,而不管子类是否与自己在同一个包中,都想让子类能够访问自己的某些成员,就应该将这些成员修饰为protected。
【例4-27】 类Circle中保护成员的访问。
程序运行结果:
分析与思考:(1)类Circle在xiyou.chapter04包中,类Ball和类Ex4_27在xiyou包中,且类Ball是类Circle的子类。类Circle中的getPerimeter()方法没有修饰符,而访问该方法的代码在类Ball中。由于类Circle和类Ball不在同一个包中,没有修饰符的getPerimeter()方法不能被访问。
(2)类Circle中的成员变量radius和成员方法getArea()被protected修饰,而访问该变量、方法的代码位置是在与Circle类不同包的子类Ball中。访问代码obj是Circle类型,不是当前子类Ball,因此无法访问。而访问代码object是Ball类型,是当前子类Ball,因此可以访问。
(3)总之,当从其他包的子类访问protected成员时,访问该成员的引用类型必须是当前子类,或者是当前子类的子类。
4.公共(public)成员
类中声明为public的成员,所有包内中的代码都可访问它。例4-24的Circle类在xiyou.zxl.javabook.chapter04包中,内容是:
由于类Circle中的成员radius、getArea()和getPerimeter()都被修饰为public,因此,任何包中的类都能引用它们。如果将它们修饰为非public,由于xiyou.zxl.javabook包中类Ex4 _4与xiyou.zxl.javabook.chapter04包中类Circle中不在同一个包中,类Ex4_4不是类Circle的子类,因此,类Ex4_4无法引用它们。
注意:要引用一个类的成员,首先要能够引用该类,然后才有可能引用其成员。类中成员的访问权限也与类的访问权限有关。例如,类Circle中成员的访问权限为public,而类Circle的访问权限为没有被public修饰,则类Circle只能在本包内被引用,因此,类Circle中的成员也只能在本包内被访问。
小结 编译系统主要从两方面来判断访问的合法性:一是被访问实体的访问级别,即被何种访问修饰符修饰(或者没有用修饰符修饰);二是访问代码出现的位置,即访问位置。例如,类的访问级别有两种,即用public修饰和没用public修饰;访问位置也可分两种情况,即被访问类所在的包和其他包,即访问的代码与被访问的类在同一个包或不在同一个包。用public修饰的类既可以在类所在的包中被访问,也可以在其他包中被访问;没有用public修饰的类只能在该类所在的包内被访问。
类成员的访问级别共有4种,按照受限制程度从强至弱依次是:私有(private)、默认(无修饰符)、保护(protected)和公共(public)。访问类成员的代码位置同样有4种情况:被访问成员所在类、被访问成员所在包中的类、被访问成员所在类在其他包中的子类、被访问成员所在类在其他包中的非子类,如表4-1所示。
表4-1 类成员的访问级别
java 类中有几种访问权限_类中成员的访问权限_Java语言程相关推荐
- java定义说话方法_类定义的基本形式_Java语言程
类定义的基本形式_Java语言程 4.2.1 类定义的基本形式 前面一节我们已经了解了类和对象的概念,然而在实际编程过程中,该如何定义一个类以及类中的对象呢? 在Java语言中,用户自己可以定义一个类 ...
- java中对象清空值_对象的引用和清除_Java语言程
对象的引用和清除_Java语言程 4.3.3 对象的引用和清除 在创建了类的对象后,就可以使用对象.即对象使用的原则是"先创建后使用". 使用对象的方法是:通过运算符". ...
- Java中包装类型的作用_基本类型的包装类_Java语言程
基本类型的包装类_Java语言程 6.3 基本类型的包装类 在Java中,每一种基本数据类型都有一个相应的包装类,这些类都在java.lang包中.8种基本数据类型所对应的包装类是:byte(Byte ...
- java穷举法解方程_枚举法(穷举法)_Java语言程
枚举法(穷举法)_Java语言程 3.5.1 枚举法(穷举法) 枚举法就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. [例3-20] 百元买百鸡:用一百元钱买一百只鸡.已知公鸡5元/ ...
- java枚举类构造方法默认是,枚举类型的构造方法_Java语言程
枚举类型的构造方法_Java语言程 6.6.4 枚举类型的构造方法 枚举类型既然是类,那么就可以有构造方法.只不过只能是私有的(private),不能有公有的(public)构造方法,这是为了避免直接 ...
- 域文件服务器共享设置,域中的文件服务器共享权限设置域中的文件服务器共享权限设置.pdf...
域中的文件服务器共享权限设置域中的文件服务器共享权限设置 先建立public 共享文件夹,将其文件夹共享,其权限设置为下图 确定之后.接著设置安全如下图 点击高级..进入高级安全设置.如下图 取消上图 ...
- java 共享内存获取写权限_跨进程访问共享内存的权限问题
问:我在服务器上用 CreateFileMapping 创建了一段共享内存.让这个exe始终在服务器上跑. 同时,别的用户在客户端用IE访问服务器,将要查询的数据通过C#制作的网页提交上来,服务器得到 ...
- 设置字段权限_命令行快速提示:权限进阶
(给Linux爱好者加星标,提升Linux技能) 编译:linux中国- Xingyu.Wang,作者:Paul W. Frields 前一篇文章介绍了 Fedora 系统上有关文件权限的一些基础知识 ...
- 软件获取手机的ime权限_你手机上软件的权限请求,都要同意吗,会不会泄漏你的隐私?...
生活中,在你使用各种手机软件的时候,不知道你有没有注意到,在软件第一次安装打开的时候,有大多数软件会弹出一个权限请求的弹框,显示出应用要请求获取什么权限以及使用这些权限的一些情况说明.我相信大多数人可 ...
最新文章
- 2.9 学习率衰减-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- iOS小知识点(非UI部分)
- CS229 1 .线性回归与特征归一化(feature scaling)
- 使用集合映射和关联关系映射_使用R进行基因ID映射
- 玩玩IronPython
- Activity之间传递参数
- 微软收购PhoneFactor以提高多因素身份认证应用程序的安全性
- 获取三角形外接圆的圆心坐标、半径
- 4.14 在数字的左侧进行补零 [原创Excel教程]
- 云计算在我们日常生活中,主要有哪些应用
- 1995-2013年RSA大会历届主题回顾
- 视频剪辑软件调研分析-iMovie、Final Cut Pro、视频剪辑大师
- 中国计算机网络设备制造业总体趋势免费版,致自己的心灵鸡汤说说,句句经典,引人深思!...
- 机器学习笔记~HDF5 library version mismatched error与ImportError: 'save_model' requires h5py问题解决
- 【Python问题解决】---- ERROR: Could not install packages due to an OSError: [WinError 2] 系统找不到指定的文件。
- VGA原理详解与verilog实现RGB888彩条(二)
- 基于android的汽车租赁出租车打车洗车app
- openwrt/wr703n INode H3C 中山大学校园网 无线路由配置操作
- Delphi/C#之父Anders Hejlsberg
- idea中使用log4j(打开、关闭日志方法)
热门文章
- 怎样把Audio cd光盘里的歌曲文件复制到硬盘里
- Unity开发VR——Oculus Rif_将Oculus接入Unity
- 在银河麒麟上编译运行firefox
- Java面向对象回顾
- MySQL中索引的使用方法
- RX-Explorer 使用体验:一款实用的 Windows 资源管理器
- 带你一步一步深入Handler源码,看这一篇就够了!
- 喜讯 | 音视频云服务商拍乐云荣登「2021值得关注的中国教育公司」榜单
- 【论文笔记 2】CNN经典入门STRIVING FOR SIMPLICITY: THE ALL CONVOLUTIONAL NET
- 使用BHO定制你的IE浏览器