Java中权限修饰符

Java中权限修饰符,第1张

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只能修饰属性和方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5719423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存