俗话说的好:没有规矩不成方圆,如果没有一些条条框框,那这个世界就乱了。
言归正传:java访问修饰符可以越权吗,答案:不能。
网上的例子一大堆,大多数都是这个截图:
但是有多少人实际写代码测试过呢。(我今天就给你测试一把,来验证它对不对)
public咱就不说了。到哪都受欢迎。
这里先看下公共代码
从private说起吧
可以说它最自闭的一个了,只能自己类调用,其他休想。
发现根本点不出来,同包都屏蔽了,那后面的子类和其他就更别想了。
其次是default
他相对来说还好些,(当属性前面不加修饰符,默认就是它),它支持同包,同包子类,这里强调下(网上有的直接就是子类不支持,这是错的,得分情况)
看见了吗,这是能调用到的,不要信那些只会复制粘贴的人,太不靠谱。
这是不可以的。拿不到def
最后一个就是protected了
protected支持同包、子类同包,不同包的子类(这个分情况)
引入菜鸟教程中:子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
先看一下在基类的下面调用
Test1和基类PubTest在同一包下,发现是能调用的,如果不同包呢
发现直接就错误了,这就应验了上面的那句话,子类必须去继承那个方法。
在回答protected这个修饰符时一定要注意,别掉进陷阱里。