java为什么不能用protected修饰类,

 我来答
郑泽旺ZY
2017-09-14
知道答主
回答量:4
采纳率:0%
帮助的人:1.8万
展开全部
default权限为同一个包中的任何类可以访问该类。protected的权限为同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)可以访问该类。貌似看上去protected比default多了一个子类权限,但是这个权限前提是有子类。对于protected权限的类,根本无法在非该类所在包中创建子类。所以实际上,对于顶级类来说,protected修饰跟default是一样的。反而相比之下,protected修饰顶级类就显得没有任何意义了。
没我的i
2022-06-06
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

1.可以用protected修饰类,不过是内部类

2.外部类只能用public以及默认修饰:protected修饰符代表能被同包以及子类访问

    类的访问无非就是继承或者创建对象或者使用其静态成员

          继承:public就够在其他包继承了,protected的子类访问继承是冲突的(如果有protected那就是子类才能访问本类并继承,但是不继承哪来的子类),默认的只能同一个包继承(方便不同包下有重名文件,可以通过import解决其他包调用,而且能通过路径确定类),private:本类才能访问继承?本类继承本类干嘛?继承以后怎么区分?所以不能用private

      创建对象:继承都过不了,那就意味着protected修饰的类其他包不存在子类,那也不存在什么子类在去创建父类对象了,而public和默认就够用,private:本类才能创建对象?会造成无限创建对象。而且只能本类创建对象完全可以通过private构造器解决。(单例模式)

      静态成员:写到这不想写了,一个过不了,其他的都不能满足

      总结:public和默认逻辑正确,适用场景全覆盖,所以不能适用其他修饰符来修饰外部类。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8c703d5
2020-08-07 · TA获得超过240个赞
知道答主
回答量:18
采纳率:66%
帮助的人:8872
展开全部

个人理解,不同包下只有public修饰的类才能产生继承关系。protected是用来表示在继承关系中的访问权限的!

  • 在同一包下

    private修饰的类----->无意义

    default修饰的类----->可以继承

    protected修饰的类----->可以继承

    public修饰的类----->可以继承

  • 不在同一包下,只有public修饰的类才能继承

    private修饰的类----->无意义

    default修饰的类----->不能继承

    protected修饰的类----->不能继承,只有public修饰的类才能被继承

    public修饰的类----->可以继承

  • 综上所述,用protected修饰的类和用default修饰的类实现的效果一样,所有舍弃用protected来修饰。

    如有误导,请多指教,马上修正!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
prd248
2016-05-11 · TA获得超过1424个赞
知道小有建树答主
回答量:1457
采纳率:0%
帮助的人:138万
展开全部
外部类只能使用了public修饰或者是默认。只要此类没有用final修饰都可以被其它类继承。如果可以用protected修饰那不是重复了吗。如果是内部类那就可以使用protected修饰了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式