java中4中修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。 下面详细讲述下它们的访问权限问题。(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况。) 首先在这里把它们的访问权限表示出来:
访问权限
类
包
子类
其他包
public
∨
∨
∨
∨
protect
∨
∨
∨
default
∨
∨
private
∨
下面做进一步说明java中4种修饰符访问权限的区别及详解全过程: 1、首先,说明public的权限问题,定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。 这里要注意:当重写父类成员函数时,子类的成员函数不能比父类的成员函数权限小,一般重写把权限定义相同即可。 代码如图所示:
①Person.java
Student extends Person{
String address;
Student(String name,int age,String address){
super(name,age);
this.address=address;
}
@Override
void study() {
System.out.println(name+"要去("+address+")学习");
}
}
②People.java
package com.tongleer;
public class People{
String address;
public void introduce(){
Person p=new Person();
p.name=null;
p.thing();
}
}
③Student.java
package com.tongleer.app;
import com.tongleer.Person;
public class Student extends Person{
String address;
public void introduce(){
System.out.println("我的名字是"+name);
thing();
}
}
④Computer.java
package com.tongleer.app;
import com.tongleer.Person;
public class Computer{
String address;
public void introduce(){
Person p=new Person();
p.name=null;
}
}
2、上边把类都建好了,然后开始测试,如果均能编译通过,就说明用public修饰的类在本类、同包、子类、其他包中互相访问都是可以的。
3、根据public的测试方法,依次用这4个类再测试protected、default和private的访问权限问题。 得出结论:public>protected>default>private权限,意思是public不管包内还是包外还是子类都能访问;protected可以允许包外的子类见访问;default只能是包内访问;private私有的只能修饰本类的成员变量和成员函数。
4、综上所述,java中4种修饰符访问权限的区别及详解全过程就此演示完了,再一次说明java语言的严谨性和安全性,我们在以后使用这4中修饰符时创建一个类,这个类的权限尽量要小,这样才能减少漏洞和提高安全性,从而体现java面向对象的封装性。
注意事项:
java面向对象的封装性对以后做程序很有帮助,可以在实际操作项目中锻炼学习。
最好不要图方便一直用public而失去了封装的意义。