首页 新闻 会员 周边 捐助

Java编程,外部类不可以使用 private 和 protected,为什么?

0
悬赏园豆:5 [待解决问题]

private不能使用尚可理解,类都修饰成private,那么其它任何类都无法访问这个类了,那么这个类就没有存在的意义了。

但是protected是指在本类中,在同一个包下的其它类,在其它包下的子类都可以访问。而default则是在本类中,在同一个包下的其它类可以访问。那么明显protected的访问范围比default大,为毛default可以修饰外部类,而protected却不可以修饰外部类呢?没有天理呀!protected表示不服。

liaowenxiong的主页 liaowenxiong | 初学一级 | 园豆:33
提问于:2022-06-04 15:05
< >
分享
所有回答(1)
0
  1. protected:继承访问权限。是⽤来修饰继承关系类中的属性和⽅法的,可以理解为先有继承关系,再研究访问权限。

  2. 假如定义⼀个A类⽤protected修饰,再在与A类不同包的另⼀个包中定义⼀个B类,B类如果要继承A类,前提是B类能够访问到A类。仔细想想就会发现这是冲突的。(你要成为A类的⼦类,你要先访问到A类,但你要访问到A类,那你先得成为A类的⼦类,因为protected修饰的类就是给⼦类访问的)这个逻辑明显是冲突的。因此功能不完整的protected最终实现的效果仍是包访问权限。

  3. 所以对于类的访问权限,仅有两个选择:default包访问权限或public(事实上,一个内部类可以是private或protected的,但那是一个特例)。

蔚然丶丶 | 园豆:204 (菜鸟二级) | 2022-06-08 00:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册