📅  最后修改于: 2023-12-03 14:51:17.275000             🧑  作者: Mango
在Java中,派生类是基类的子类,它可以继承基类的成员变量和方法。在派生类中,我们可以对基类的方法进行重写(Override)或者隐藏(Hide)。
然而, Java对于派生类方法的访问却比较严格。
首先,Java要求在子类中访问(访问指:覆盖或调用)基类的方法时必须使用 super 关键字进行访问。即使子类中定义了同名的方法,也必须使用 super 关键字来访问基类的方法。
以下是一个例子:
// 基类
public class Base {
public void greet() {
System.out.println("Hello, I'm base class.");
}
}
// 派生类
public class Derived extends Base {
public void greet() {
super.greet(); // 使用 super 关键字访问基类方法
System.out.println("Hello, I'm derived class.");
}
}
在上面的例子中,基类 Base 和派生类 Derived 都定义了 greet 方法。在 Derived 类中,我们使用 super.greet() 来访问基类 Base 中的 greet 方法。
其次,Java也要求访问权限必须比基类更为严格。例如,如果基类中一个方法的访问修饰符为 protected,那么在派生类中重写该方法时,访问修饰符只能为 protected 或者 public,而不能是 private 或者更宽松的访问修饰符。
以下是一个例子:
// 基类
public class Base {
protected void greet() {
System.out.println("Hello, I'm base class.");
}
}
// 派生类
public class Derived extends Base {
public void greet() {
super.greet(); // 使用 super 关键字访问基类方法
System.out.println("Hello, I'm derived class.");
}
}
在上面的例子中,基类 Base 的 greet 方法使用了 protected 访问修饰符。在派生类 Derived 中,我们仍然可以访问基类 Base 的 greet 方法,但访问修饰符必须是 protected 或者 public。
综上所述,Java对派生类方法的访问更为严格,必须使用 super 关键字进行访问,同时访问权限必须比基类更为严格。这些规定可以确保程序的安全性和稳定性。