java权限修饰符default和protected区别

java一共有4中权限修饰符,分别是private、default、protected和public

private和public很好理解,default和protected不太好分清。

protected 包内所有类可见,包外有继承关系的子类可见

default表示默认,不仅本类访问,而且是同包可见。

语言描述可能理解的不够深刻,代码才是最有效的办法

这是我的包结构:

注释的代码代表不能编译,先写一个QWE类用于被继承,里面一个protected修饰的方法一个default修饰的方法

package qwe;

public class QWE {
    protected void haha(){
        System.out.println("haha");
    }
    void hehe(){
        System.out.println("hehe");
    }
}

 

package qwe;

public class ASD extends QWE{
    public static void main(String[] args) {
        qwe.ASD asd=new qwe.ASD();
        asd.haha();
        asd.hehe();
        QWE qwe=new QWE();
        qwe.haha();
        qwe.hehe();
    }

    public void aa(){
        haha();
        hehe();
    }
}

 从上面代码可以看到,同包下继承,两者都可以通过子类对象和父类对象调用,子类内也可调用

package asd;

import qwe.QWE;

public class ASD extends QWE {
    public static void main(String[] args) {
        asd.ASD asd=new asd.ASD();
        asd.haha();
//        asd.hehe();
        QWE qwe=new QWE();
//        qwe.haha();
//        qwe.hehe();
    }
    public void ss(){
        haha();
    }
}

 不同包下继承,因为父类方法不是public所以都不能调用,子类对象可以调用protected修饰的方法

但是:

import asd.ASD;

public class Main {

    public static void main(String[] args) {
        ASD asd=new ASD();
//        asd.haha();
    }
}

子类对象可以在子类内调用继承来的protected方法,但是不能在其它类内调用该方法

也就是说protected修饰的方法可以在子类内部调用却不能在子类外部调用

 

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽蓝丶流月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值