Java作用域

来源:互联网 发布:php pdo query exec 编辑:程序博客网 时间:2024/05/17 00:53

作用域 public,private,protected,以及不写时的区别:

作用域当前类同一package子孙类其他 package非子孙类public√√√√protected√√√×friendly√√××private√×××

不写时默认为 friendly

private修饰的作用域为其所有类,public任意类都可以访问,这两个比较容易理解。

protected是从类的继承关系上进行限制的,而friendly是从类文件的组织关系上进行限制的。

因此friendly修饰的作用域为同一个package,但是,protected修饰的在同一package的非继承类中也是可见的,这点需要注意。

在这点上的理解,可以考虑包的作用。

包的存在,是为了组织类文件或者类,类似于命名空间的概念。

类的组织应该遵循面向对象设计的一些基本原则,无关的类要隔离开来,先关的类要存放在一起。

因此,对于存放在一个包下的类,他们应该是能够互相访问的,因此即使没有继承关系,也可以访问到protected修饰的属性。

package anotherTest;import test.A;public class C extends A {public void test() {System.out.println(protectedX);System.out.println(super.protectedX);System.out.println(super.publicX);}public static void main(String[] args) {(new C()).test();}}
package test;public class B {public void Test() {A a = new A();System.out.println(a.publicX);System.out.println(a.friendlyX);System.out.println(a.protectedX);}public static void main(String[] args) {(new B()).Test();}}
package anotherTest;import test.A;public class C extends A {public void test() {System.out.println(protectedX);System.out.println(super.protectedX);System.out.println(super.publicX);}public static void main(String[] args) {(new C()).test();}}
原创粉丝点击