java访问权限

博客介绍了Java的四种访问权限,包括private(本类访问)、default(同包内访问)、protected(同包和子类可访问)、public(所有类可访问),还说明了其使用范围,四种权限均可修饰成员变量等,default和public可修饰类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java访问权限有四种

private:私有的,只有本类访问

default(通常忽略不写):同一个包内访问

protected:同一个包,子类均可以访问

public :公开的,所有类都可以访问

使用范围

四种都可以用来修饰成员变量、成员方法、构造函数

default和public可以修饰类

 

 

package test1;

public class A {
	private int v1 = 1;
	int v2 = 2;//如果没有写private/protected/public
	//那就是default。但是不能显式写default,写了编译器将报错
	protected int v3 = 3;
	public int v4 = 4;
	
	private void showv1() {
		System.out.println(v1);
	}
	
	void showv2() {
		System.out.println(v2);
	}
	
	protected void showv3() {
		System.out.println(v3);
	}
	
	public void showv4() {
		System.out.println(v4);
	};
}

 

package test1;

public class B {
	public void show() {
		//B is not subclass of A//B不是A的子类,A的成员方法和变量无法访问
		//System.out.println(v1);
		//System.out.println(v2);
		//System.out.println(v3);
		//System.out.println(v4);
		//showv1();
		//showv2();
		//showv3();
		//showv4();
		
		A obj = new A();//A类的private成员不能对外分享,但是其它的成员变量可以被同一个包的其他类访问
		//System.out.println(obj.v1);error , private
		System.out.println(obj.v2);
		System.out.println(obj.v3);
		System.out.println(obj.v4);
		
		//obj.showv1();
		obj.showv2();
		obj.showv3();
		obj.showv4();
	}
}
package test1;

public class C extends A{//c类继承与A类,因此C类是A的子类,而且C类和A类在同一个包中
	public void show() {//子类继承父类所有的东西,但是不能直接访问private的成员
		//System.out.println(v1);  error ,private;
		System.out.println(v2);
		System.out.println(v3);
		System.out.println(v4);
		//showv1();error ,private
		showv2();
		showv3();
		showv4();
		
		A obj = new A();
		//System.out.println(obj.v1); error ,private
		System.out.println(obj.v2);
		System.out.println(obj.v3);
		System.out.println(obj.v4);
		
		//obj.showv1();error  private
		obj.showv2();
		obj.showv3();
		obj.showv4();
	}
}
package test2;

import test1.A;

public class D extends A{//D是A的子类,但是不同包;
	public void show() {//D作为A的子类,不能直接访问A的private,又因为D和A不同包,不能访问default部分
		//System.out.println(v1);
		//System.out.println(v1);
		System.out.println(v3);
		System.out.println(v4);
		//showv1();error private
		//showv1();error default
		showv3();
		showv4();
		
		A obj = new A();
		//System.out.println(obj.v1);//error,private
		//System.out.println(obj.v2); //error ,default
		//System.out.println(obj.v3);// error protected作为子类才能访问
		System.out.println(obj.v4);
		//obj.showv1();private 
		//obj.showv2();default
		//obj.showv3();protected 只能子类才能访问
		obj.showv4();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值