Java中protected和default权限的区别

protected权限和default权限很容易混淆。 protected和default区别:同包下不同类可访问,不同包下不同类都不可访问(特例:protected在不同包下子类中可访问)

  • 在同一个包中,所有的类都能够访问某一个类中所有非private权限的方法或者属性。
  • 一个包中的类不能通过继承访问另一个包中default权限的方法或者属性。换言之,子类在同一个包中可以访问default权限的方法或属性,子类不在同一个包中则不可以。
  • 在不同包中子类是不能通过父类的实例访问protected权限的方法或者变量的,可以通过子类访问。

下面举个例子

首先使用default定义变量

这时在在另一个包中定义CZT的子类B,没有权限访问name变量

换成protected,protected与default的区别就在于,protected变量可以在不同的包中被子类访问

没有报错,一切正常

protected和default区别:同包下不同类可访问,不同包下不同类都不可访问(特例:protected在不同包下子类中可访问)


发表评论