概述
在实际开发中,一般对于类权限使用public,对于方法权限使用最多的是public,private,
对于属性权限使用最多的是private,或者默认权限。使用以上权限,对于代码访问
一般足够使用。很少使用protected权限。
(注意: 关于protected权限只能使用于方法或属性上,在类上是没有这个权限的,不能用于类上)。
有些特殊情况下我们需要使用protected,比如,父类提供了一个方法,不想让其他包中的
对象访问,只想让自己所在包中的类访问,这个时候如果我们用public和private是满足不了
这种需求的,这个时候protected权限就派上了用场。
eg:
在test包中有两个类,一个Parent,一个Children
Parent:
package com.lanhuigu.java.test;
public class Parent {
// protected在本包中可以访问,如果跨包就不能访问
protected String song() {
return "唱歌";
}
}
Children:
package com.lanhuigu.java.test;
public class Children extends Parent{
// 子类重写父类的方法,扩大访问权限
public String song() {
return "唱歌";
}
public String code() {
return "编码";
}
}
Test:
package com.lanhuigu.java.util;
import com.lanhuigu.java.test.Children;
import com.lanhuigu.java.test.Parent;
public class TestAccess {
public static void main(String[] args) {
Parent parent = new Parent();
/*
* Parent中的song方法是protected权限,其他包中没有访问权限
*/
//System.out.println(parent.song());
System.out.println("=================");
Children children = new Children();
System.out.println(children.code());
/*
* 子类通过重写父类的song方法,将父类的访问权限protected提升至public的高度,
* 供其他包中的类调用,如果子类不重写父类的song方法,提高访问权限,其他包中的类通过
* 子类对象也是无法访问song方法的,因为没有提高访问权限之前song方法是protected权限的。
*/
System.out.println(children.song());
}
}
程序分析:
在test包中,Parent类song方法访问权限为protected权限,子类Children继承父类,
重写父类Parent的song方法,将访问权限提高到public程度,在TestAccess中,
通过父类对象Parent不能访问父类protected权限的song方法,因为TestAccess类在util包中,
与Parent不在同一包中,所以不能访问;但是可以通过子类Children对象访问song方法,因为
子类重写了父类的song方法,提升了访问权限。
为什么protected权限叫做'友好'权限?
就好比一个家族中某个人升官发财,有好处一般都是给这个家族中共享,
一般不会把好处给了外人,但是世间还是有真情的,家族中某些人将这些好处从protected
保护的状态提升到public公开的状态,这样其他家族都能共享了,这就是友好的含义。
在java中,比如A包就一个家族,在A包中protected的东西大家都能用,
但是对于另外一个包B就是外人,直接看不到A中的protected的东西。
如果B包想用A包的protected东西,必然有A包中某个类将protected的东西
提升到public的程度,B包才能使用。
最后
以上就是感性鼠标为你收集整理的【基础】protected 权限的全部内容,希望文章能够帮你解决【基础】protected 权限所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复