社区
Java SE
帖子详情
关于java类的访问权限设置
whoispo
2011-09-20 05:29:10
我有一个问题很疑惑,假设一个类没有设置为public,但是其中的成员变量或函数设置为public或protected,这是不是没有什么作用呢?它的成员变量和函数仍然无法在其它包中使用,对吗?
...全文
369
15
打赏
收藏
关于java类的访问权限设置
我有一个问题很疑惑,假设一个类没有设置为public,但是其中的成员变量或函数设置为public或protected,这是不是没有什么作用呢?它的成员变量和函数仍然无法在其它包中使用,对吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ETCentury
2011-09-22
打赏
举报
回复
[Quote=引用 14 楼 whoispo 的回复:]
我自己想明白了,一个默认类中声明public方法还是有作用的,比如我在一个包中定义两个类,一个默认类,一个public类,默认类被public类继承。那么默认类中的public方法也会被继承,虽然默认类不能被包外的类访问,但是其中的public方法可以通过public类来访问。(是不是有一点绕?)
[/Quote]
继承下来只能说明这个时候的方法应该是属于子类的,你进行的访问,实际上是对子类的访问。从这一点说,是不能直接访问。
ETCentury
2011-09-22
打赏
举报
回复
[Quote=引用 14 楼 whoispo 的回复:]
我自己想明白了,一个默认类中声明public方法还是有作用的,比如我在一个包中定义两个类,一个默认类,一个public类,默认类被public类继承。那么默认类中的public方法也会被继承,虽然默认类不能被包外的类访问,但是其中的public方法可以通过public类来访问。(是不是有一点绕?)
[/Quote]
呵呵,还真够绕的
lliiqiang
2011-09-21
打赏
举报
回复
应该是没有意义的
whoispo
2011-09-21
打赏
举报
回复
我自己想明白了,一个默认类中声明public方法还是有作用的,比如我在一个包中定义两个类,一个默认类,一个public类,默认类被public类继承。那么默认类中的public方法也会被继承,虽然默认类不能被包外的类访问,但是其中的public方法可以通过public类来访问。(是不是有一点绕?)
结贴是美德
2011-09-21
打赏
举报
回复
[Quote=引用 4 楼 dongweijhzhangli 的回复:]
打个比方吧,一个人(类)不能进入中国馆(权限范围),他的腿(成员变量和函数)怎么能自己进去呢。
[/Quote]
haha 很生动呢。。类的权限与其成员的访问权限是“递进”的关系
程序员Shark
2011-09-21
打赏
举报
回复
是的 怎么记得前几天有同样的帖子
Cactus_hxk
2011-09-20
打赏
举报
回复
[Quote=引用 2 楼 ioe_gaoyong 的回复:]
不是public 默认是default,这样确实是没法在其他包当中使用的,访问权限控制就是起这个作用的
答案很肯定
[/Quote]
这个对,
qybao
2011-09-20
打赏
举报
回复
[Quote=引用 5 楼 whoispo 的回复:]
那么为什么可以在一个非public类中写public static void main(..)呢?一样可以运行啊?
[/Quote]
那是因为你是调用
java 非public类
命令来启动程序的
这个和其它包的类访问该非public类是不同的,前者是用java命令来访问非public类,后者是程序的类之间的相互访问
echola_2020
2011-09-20
打赏
举报
回复
类只能有public或默认访问级别。具有默认级别的类只能对位于同一个包中的类是可见的。如果将一个类声明为默认级别,其他包中的类要访问该类中的protected成员,可以通过继承实现。这样有利于提高安全性。
yaganblw
2011-09-20
打赏
举报
回复
主方法独立于类
whoispo
2011-09-20
打赏
举报
回复
那么为什么可以在一个非public类中写public static void main(..)呢?一样可以运行啊?
夜半风雨知道少
2011-09-20
打赏
举报
回复
打个比方吧,一个人(类)不能进入中国馆(权限范围),他的腿(成员变量和函数)怎么能自己进去呢。
kai27ks
2011-09-20
打赏
举报
回复
不对。应该说无法直接使用。比如内部类。
风尘中国
2011-09-20
打赏
举报
回复
不是public 默认是default,这样确实是没法在其他包当中使用的,访问权限控制就是起这个作用的
答案很肯定
绝世酱油瓶
2011-09-20
打赏
举报
回复
是的。。。。不可以直接使用
编写
Java
程序,实现对兵营
类
的封装,将兵营
类
中的所有属性
设置
为私有
访问权限
,方法
设置
为公有
访问权限
返回本章节 返回作业目录 需求说明: 实现对兵营
类
的封装 将兵营
类
中的所有属性
设置
为私有
访问权限
。 将兵营
类
中所有属性的赋值方法
设置
为公有
访问权限
。 要求兵营名称的长度在4~8位之间。 要求兵营士兵的人数在100~500之间。 实现思路: 封装兵营
类
的实现思路如下: 将 Barracks
类
中所有的属性均定义为私有
访问权限
。 将已经创建的士兵总数count属性定义为静态变量,在Barracks
类
中定义大小为3的兵营对象数组变量bksarray。 在 setName()方法中,对用.
Java
反射获取字段、
设置
字段以及获取字段的值
Java
反射获取字段、
设置
字段以及获取字段的值 获取字段 1.先找到字段所在
类
的字节码 2.找到需要被获取的字段 Class
类
中获取字段: public Field[] getFields();//获取包括自身和继承(实现)过来的所有的public字段——Field不支持泛型<>,即后面不接<> public Field[] getDeclaredFields(...
java
类
访问权限
基础:
访问权限
等级,由最大权限到最小权限:public:对所有成员可用;protected:继承
访问权限
;包
访问权限
:没有修饰词,对当前包中所有其他
类
可用;private:除了该
类
,其他任何
类
无法访问。
类
的
访问权限
: 每个编译单元,也就是每个文件都只能有一个public
类
。
类
既不可以是private,也不可以是protected,所以对于
类
的
访问权限
,只有两个选择
JAVA
:编译运行含有包层的
类
、同包和不同包
类
的相互访问、不同包子
类
和父
类
的
访问权限
1.编译运行含有包层的
类
java
中,为了确保
类
名的唯一性,以及方便组织自己的代码,引入了包package。 package语句必须放在程序代码的第一行,除注释之外。 在某一程序代码的首行,如果没有package语句,代码仍然可以编译,编译后的class文件被存放在默认包中,即与
java
文件同目录。 《
JAVA
编程思想》中这样写到:“
Java
将这样的文件自动看作是隶属于该目录的默认包之中,于是...
Java
中的包、import语句、
访问权限
上一篇文章:
Java
方法重载、this关键字用法 包
Java SE
62,622
社区成员
307,256
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章