Java中的protected关键字

如果希望超类中的某些方法允许被子类访问,或者允许子类的方法访问超类的某个域,为此需要将这些方法或域设置为protected。在实际的程序中很实用这个关键字。

下面归纳一下Java用于控制可见性的4个访问修饰符:

  1. 仅对本类可见---private
  2. 对所有类可见---public
  3. 对本包和所有子类(本包的)可见---protected
  4. 对本书可见——默认,不需要修饰符
public class protect {

	private String name;
	protected int age;
	public protect(String name, int age) {
		//super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "protect [name=" + name + ", age=" + age + "]";
	}
	
}
public class protectChild extends protect{

	private String major;
	public protectChild(String name, int age,String major) {
		super(name, age);
		this.major = major;
	}
	public String getMajor() {
		return major;
	}
	public void setMajor(String major) {
		this.major = major;
	}
	@Override
	public String toString() {
		return "protectChild [major=" + major + "]" +"[age=" + age +"]" ;
	}
}

 

结果:
1
protect [name=gaga, age=20]
20
protectChild [major=chinese][age=40]

 

上面的代码中我们可以看到,在子类中可以直接访问超类中的protected域,在本包中的其他类也可以直接访问,但是注意到一点,子类和调用该类的其他类可以直接访问该保护类型的变量对进行修改。

public class Protext {

	public static void main(String[] args) {
      
		protect p = new protect();
		System.out.println(p.age);
		p.age = 10;
		System.out.println(p.age);
	}
}
结果:
1
10

如果受保护变量是静态的,在同一个线程下的不同对象对该变量进行操作会影响其他的对象。运行状态下的不同线程中不同对象对同一静态变量进行操作也会妨碍其他对象对该静态变量的访问。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值