Java 子类继承的方法权限

在Java中,子类可以继承父类的方法。这意味着子类可以使用父类中已经定义好的方法,而不需要重新编写相同的代码。然而,子类继承的方法并不总是具有相同的权限。本文将介绍Java中子类继承方法的权限规则,并提供相应的代码示例。

方法的权限修饰符

在Java中,方法可以使用不同的权限修饰符来限制其可见性。常用的权限修饰符包括public、private、protected和默认(即不包含任何修饰符)。这些权限修饰符决定了方法可以被哪些类访问。

  • public:公共方法可以被任何类访问。
  • private:私有方法只能在声明它的类内部访问。
  • protected:受保护的方法可以在同一个包内的其他类中访问,以及在不同包中的子类中访问。
  • 默认:默认方法可以在同一个包内的其他类中访问,但无法在不同包中的子类中访问。

子类继承父类方法的权限规则

下面是Java中子类继承父类方法权限的规则:

  1. 子类可以继承父类的public和protected方法,且访问权限不受限制。
  2. 子类无法继承父类的private方法,因为私有方法只能在父类内部访问。
  3. 子类可以继承父类默认权限的方法,但在不同包中的子类无法访问。

下面的代码示例将帮助我们理解这些规则。

// 父类
public class ParentClass {
    public void publicMethod() {
        System.out.println("This is a public method.");
    }

    protected void protectedMethod() {
        System.out.println("This is a protected method.");
    }

    private void privateMethod() {
        System.out.println("This is a private method.");
    }

    void defaultMethod() {
        System.out.println("This is a default method.");
    }
}

// 子类
public class ChildClass extends ParentClass {
    // 在子类中可以直接访问父类的public和protected方法
    public void childMethod() {
        publicMethod();
        protectedMethod();
    }

    // 无法访问父类的private方法
    // 由于privateMethod()在父类中是private的,子类无法继承或访问该方法
    // public void childMethod() {
    //     privateMethod();
    // }

    // 无法访问父类的default方法
    // defaultMethod()在父类中的访问权限为默认,只能在同一个包内的类中访问
    // 子类虽然继承了该方法,但在不同包中无法访问
    // public void childMethod() {
    //     defaultMethod();
    // }
}

// 测试类
public class Main {
    public static void main(String[] args) {
        ChildClass child = new ChildClass();
        child.childMethod(); // 子类可以调用父类的public和protected方法
    }
}

在上述代码中,我们创建了一个父类ParentClass,其中有一个public方法publicMethod、一个protected方法protectedMethod、一个private方法privateMethod和一个默认方法defaultMethod。然后,我们创建了一个子类ChildClass,继承了父类的方法。在子类中,我们可以直接调用父类的public和protected方法,因为这些方法的访问权限对子类是开放的。但是,我们无法在子类中直接调用父类的private方法和默认方法,因为这些方法的访问权限对子类是不可见的。

通过理解子类继承父类方法的权限规则,我们可以更好地组织和管理Java代码,并确保代码在不同类之间的正确交互。