Java访问修饰符原理及代码解析
一、概述
访问等级比较:public>protected>default>private
无论是方法还是成员变量,这四种访问权限修饰符作用都一样
- public:不管包外包内,所有类(子类+非子类)均可使用
- protected
- 包内:所有类可使用
- 包外:子类可使用,非子类不可使用
- default
- 包内:所有类可使用
- 包外:所有类不可使用
- private:仅本类可使用
二、示例代码
Test包内的父类Permission
publicclassPermission{
privateintprivateValue=1;
publicintpublicValue=1;
protectedintprotectedValue=1;
intdefaultValue=1;
voiddefaultFunc(){
System.out.println("Thisisadefaultfunction");
}
publicvoidpublicFunc(){
System.out.println("Thisisapublicfunction");
}
protectedvoidprotectedFunc(){
System.out.println("Thisisaprotectedfunction");
}
privatevoidprivateFunc(){
System.out.println("Thisisaprivatefunction");
}
}
Test包内的子类SubPermission
publicclassSubPermissionextendsPermission{
publicvoidpermissionTest(){
//public,protected,defaultfunctionandvariablecanbeused
System.out.println("thisisadefaultvalue:"+this.defaultValue);
System.out.println("thisisapublicvalue:"+this.publicValue);
System.out.println("thisisaprotectedvalue:"+this.protectedValue);
this.publicFunc();
this.protectedFunc();
this.defaultFunc();
}
}
Test包外的子类
importbase.Test.Permission;
publicclassDemoextendsPermission{
publicstaticvoidmain(String[]args){
//ifisnotasubclass,onlypublicfunctionandvariablecanbeused
Permissionobj=newPermission();
obj.publicFunc();
System.out.println("thisisapublicvalue:"+obj.publicValue);
//ifisasubclass,publicandprotectedfunctionandvariablecanbaused
Demodemo=newDemo();
demo.publicFunc();
demo.protectedFunc();
System.out.println("thisisapublicvalue:"+demo.publicValue);
System.out.println("thisisaprotectedvalue:"+demo.protectedValue);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。