阅读了一下thinking in java 感慨颇多,基础还是不行。遂重新推倒彻底重学!
今天写的是关于访问权限的public private protect
1) public 完全可见
2) protect 本包和子类可见
3) default 本包可见
4) private 本类可见
权限由大到小
不过根据实际实验得知:
第2条 本包可见,子类在本包也可见,不过并不是所有子类都可见,而是在同一个包下的子类可见在其他包下的子类就不可见了。
截图如下
public class PubClass {
public class InnerPubClass{
}
private class PriClass{
}
protected class ProClass{
}
class DefClass{
}
public void pubFunc(){
}
protected void proFunc(){
}
void defFunc(){
}
private void priFunc(){
}
}
PubSonClass 以及PubOuterSonClass 都为PubClass的子类,内部无具体实现
以下为pkg1中的main类
而pkg2中的main类 则出现标红(异常提醒)如下
通过已上截图发现,PubOuterSonClass为子类但不是和父类在同一包下调用内部方法或者内部类就会报错.
可能原因是继承来的属性或者方法依然认为是父类的,故违反本包可见原则。