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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。