关于Java中的default访问权限问题

先说一下Java中的4中修饰符的访问权限
 访问权限   类   包  子类  其他包

public     ∨   ∨   ∨     ∨

protect    ∨   ∨   ∨     ×

default    ∨   ∨    ×     ×

private    ∨   ×     ×     ×

上面的这种访问权限表网上一大堆,但是我今天说的问题是其中关于default的问题。
由上表可知default访问权限是在子类中不能被调用,但是我却发现子类中能调动default修饰符修饰的变量或方法!!!这是怎么回事呢??

package cn.ilovessf.Demo1;

public class Father {
    private String name = "Tom";
    //该方法是默认访问权限
     String getName(){
         return this.name;
     }
}


//上面是Facther类,下面是Son类

package cn.ilovessf.Demo1;
public class Son extends Father{
    public static void main(String[] args) {
        Father f = new Father();
        String name = f.getName();
        System.out.println(name);
    }
}

运行子类的main方法可以看到竟然能够输出结果!!!!

这是为什么呢???明明说好的子类不能调用default方法的。
后来转而一想,明白了。
大家要注意!!!Father类和Son类是在同一个包下的。

所以,此时根据上面的访问权限,同包下的类是可以default修饰的方法或变量的!

所以,我又试了在别的包下面,又写了一个Son类,也继承了Father类,此时因为两个类不在一个包下面,所以,这时候Son类中就不能得到Father类的getName()方法了!大家可以自己动手试一下!

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页