我所理解的Java访问权限

刚看完马士兵的java视频,我就研究了一下我一直有些顾忌以及疑惑的java修饰权限,大概搞明白了。

1.private 和 public 

private 在类内部是可以随便访问的,和public都是人如其名,一个私有,一个公共。private像个极其吝啬的财主,除了自己以外,东西连他儿子都不给,更别说别的情况了。

public class test extends A {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a = new A();
		test t = new test();
		System.out.println(a.b);
		System.out.println(t.b);
<span style="white-space:pre">	</span>//以上两行编译通不过
	}
}
class A {
	private int b = 10;
}

整个文件就像一个书店,而public就像里面的各种书籍,对来到书店的所有人开放。

2.default

default也就是默认,在类内部的访问就不必说了。

当在同一个包里面的时候,其他类都可以访问(我在A里面定义了一个整形c变量)

public class test extends A {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		test t = new test();
		System.out.println(t.c);
	}
}

当我把A放到别的包里面时,此时就不能访问c了,子类也不行。那default的权限最大就到这里咯,整个文件里面有各种包裹,在一个包裹里面,default可以肆意横行,把它放到别的包裹之后就焉儿了。

3.protected

我之前一直错误的以为private比protected权限大,真是对不起给我教授java只是的学长和看过的书。


我在A里面protected int ee = 3;在test里面就能访问到

import dd.A;


public class test extends A {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a = new A();
		System.out.println(a.ee);
		test t = new test();
		System.out.println(t.ee);
	}
}
但是a是不能访问到ee变量的,因为此时的a访问的ee是直接访问,而不是通过子类访问,这就是protected和public的从差距所在吧。

当然,吧A放到和test同一个包下就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值