当前位置: 首页 > 图灵资讯 > 技术篇> java中protected和default的区别

java中protected和default的区别

来源:图灵教育
时间:2024-05-16 21:03:16
java 中 protected 和 default 访问控制的区别如下:default 可见性仅限于同包,而可见性仅限于同包 protected 可见性包括同包和子类。default 不能被子类继承,但是 protected 可以。default 其他包不能访问,但不能访问 protected 同包和子类可以访问。

java中protected和default的区别

protected 与 default 访问控制

问题:Java 中 protected 和 default 访问控制有什么区别?

回答:

protected 和 default 访问控制是 Java 两个访问控制修饰符用于限制类、方法和字段可见性。它们之间的区别如下:

可见性范围:

  • default:仅在声明类及其同包中的子类和类别中就可见。
  • protected:除了 default 除访问范围外,还允许访问子类(无论它们在哪个包里)。

继承:

  • default:子类不能继承和拥有 default 除非子类和父类在同一个包里,否则访问权限的成员。
  • protected:子类总是可以继承的 protected 无论子类和父类是否在同一包中,访问权限的成员。

访问:

  • default:具有 default 访问权限的成员不能从其他包中访问。
  • protected:具有 protected 访问权限的成员可以访问同一个包,也可以访问子类(无论他们在哪个包)。

示例:

// default 访问权限
class Animal {
    int age; // default 访问权限
}

// 另外一个包里的类
class Farm {
    // 无法访问 Animal 中的 age 变量,因为 Farm 和 Animal 不在同一个包里
}

// protected 访问权限
class Mammal extends Animal {
    boolean hasFur; // protected 访问权限
}

// 包里的另一个类别
class Elephant extends Mammal {
    // 可以访问 hasFur 变量,因为 Elephant 是 Mammal 的子类
}

登录后复制

其他要点:

  • default 有时候访问权也叫“访问权”package-private因为它的可见性仅限于当前的包装。
  • protected 访问权限比 default 由于允许子类访问,访问权限更加宽松。
  • 通常用于需要在子类中访问且不应从其他包中访问的成员 protected 访问权限。

以上是javaprotected和default区别的详细内容,请关注图灵教育的其他相关文章!