Java中权限修饰符

Java中权限修饰符

public:公共权限,修饰属性、方法、类,可以被任意类访问
private:私有权限,修饰属性、方法,只能在本类中访问
protected:受保护的权限,修饰属性、方法

  • 父类的protected修饰的成员是在同一包中可见的,并且对子类也可见,详细的见以下代码
    Father类
package com.zretc.p2;

public class Father {
	protected int  num;
	protected void method1() {
		System.out.println("编译通过");
	}
}

同包非子类

package com.zretc.p2;

public class Test {
	public static void main(String[] args) {
		Father father1 = new Father();
		father1.method1();//编译通过
		father1.num = 10;//编译通过
	
	}
}

同包子类

package com.zretc.p2;
public class Son1 extends Father{
	public static void main(String[] args) {
		Father father1 = new Father();
		father1.method1();//编译通过
		father1.num = 10;//编译通过
		
		Son1 son1 = new Son1();
		son1.num = 10;//编译通过
		son1.method1();//编译通过
	}

}
  • 若这个子类与父类不在同一个包中,那么这个子类只能访问从父类继承过来的protected成员,但是不能访问父类本身实例的protected方法。这里其实是最不好理解的,可以通过下列代码来理解
    异包子类
package com.zretc.p22;
import com.zretc.p2.Father;

public class Son2 extends Father{
	public static void main(String[] args) {
		Father father2 = new Father();
		father2.method1();//编译错误
		father2.num = 10;//编译错误
		
		Son2 son2 = new Son2();
		son2.method1();//编译通过
		son2.num = 10;//编译通过
}
}

这里的father对象即为基类(Father类)的实例,因此不能直接访问它自身的method1()方法。而son2是其子类的对象,因此可以访问从基类Father类继承过来的method1()方法了。

default:同包权限,修饰类、属性、方法,只能被同包的类访问
【注】只有public和default可以修饰类,protected和private只能修饰属性和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想学摄影的IT男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值