Java作用域

作用域 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();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值