java public、protected、default、private
java 的访问控制符为了控制类还有类对应方法的访问做限制。
如上的图表总结了类方法的访问控制范围,其实类的访问控制范围也是类似的情况。声明为public则不管外部包还是内部都能够访问,如果为default则只能本包内能够访问
关于类方法的访问范围,我们比较熟悉的是private还有public,private只有本类的内部才能访问而public则到处都能访问
这里主要聊的是default和protected
一、default
我们的访问限制中没有default这个关键字,但是我们没有写public、protected、default或者private则表示为default
package com.example.exampletest.testvisit; public class TestVisit { public void printPublic() { System.out.println("TestVisit:printPublic"); } protected void printProtected() { System.out.println("TestVisit:printProtected"); } void printDefault() { System.out.println("TestVisit:printDefault"); } private void printPrivate() { System.out.println("TestVisit:printPrivate"); } }
如上的printDefault函数可以在包路径为com.example.exampletest.testvisit 中的其他类中访问的到
那么假设有一个包名为:com.example.exampletest.testvisit.nextfold 中的类是不能访问到TestVisit 中的printDefault函数
二、protected
在同一个包中,访问范围跟default一样就不赘述;这里主要讲不同包之间的访问
package com.example.exampletest; class TryVisits extends TestVisit { void printVisit() { this.printPublic(); this.printProtected(); } }
在包com.example.exampletest中有类TryVisits 继承TestVisit,TryVisits作为TestVisit的子类,虽然跟TryVisits不在同一个包中,但是依旧能够访问的到printProtected
package com.example.exampletest; public class HelloWorld { private void testVisits() { TryVisits visits = new TryVisits(); visits.printPublic(); // visits.printProtected(); // 访问不到 } }
如上在跟TryVisits同一个包中的HelloWorld类new出来的TryVisits也是不能访问TryVisits的父类的成员函数printProtected,因为HelloWorld既不是TestVisit的子类也不是跟TestVisit在同一个包中。
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!