关于java类的访问权限设置

whoispo 2011-09-20 05:29:10
我有一个问题很疑惑,假设一个类没有设置为public,但是其中的成员变量或函数设置为public或protected,这是不是没有什么作用呢?它的成员变量和函数仍然无法在其它包中使用,对吗?
...全文
307 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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(..)呢?一样可以运行啊?
  • 打赏
  • 举报
回复
打个比方吧,一个人(类)不能进入中国馆(权限范围),他的腿(成员变量和函数)怎么能自己进去呢。
kai27ks 2011-09-20
  • 打赏
  • 举报
回复
不对。应该说无法直接使用。比如内部类。
风尘中国 2011-09-20
  • 打赏
  • 举报
回复
不是public 默认是default,这样确实是没法在其他包当中使用的,访问权限控制就是起这个作用的
答案很肯定
绝世酱油瓶 2011-09-20
  • 打赏
  • 举报
回复
是的。。。。不可以直接使用

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧