关于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()方法了!大家可以自己动手试一下!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值