Java 父类方法:继承和多态中的关键概念162
在 Java 中,继承是一种强大的机制,允许类从其他类继承方法和属性。父类方法是父类中定义的方法,可以被其子类继承和覆盖。这使得子类可以在保持父类行为的同时扩展或修改父类中的功能。
继承 @Override
当子类想要覆盖父类中的方法时,它需要使用 @Override 注解。此注解告诉编译器,子类的方法正在覆盖父类的方法,并且如果子类没有提供实现,就会产生编译时错误。
class ParentClass {
public void display() {
("Parent class method");
}
}
class ChildClass extends ParentClass {
@Override
public void display() {
("Child class method");
}
}
在上面的示例中,ChildClass 覆盖了 ParentClass 中的 display() 方法。当调用 display() 方法时,它将执行 ChildClass 中实现的方法。
方法重写
方法重写允许子类改变父类中方法的行为。子类可以提供 display() 方法的不同实现,以满足其特定需求。
class ParentClass {
public void display() {
("Parent class method");
}
}
class ChildClass extends ParentClass {
@Override
public void display(String message) {
(message);
}
}
在上面的示例中,ChildClass 重写了 ParentClass 中的 display() 方法,接受一个额外的字符串参数。现在,ChildClass 可以以不同的方式显示消息。
方法多态
多态是一种特性,允许子类对象以其父类类型的引用访问。这意味着子类可以透明地替换其父类,而无需修改调用它们的代码。方法多态允许子类以与父类不同的方式响应相同的方法调用。
class ParentClass {
public void display() {
("Parent class method");
}
}
class ChildClass extends ParentClass {
@Override
public void display() {
("Child class method");
}
}
public class Main {
public static void main(String[] args) {
ParentClass obj = new ChildClass();
(); // Child class method
}
}
在上面的示例中,obj 是 ParentClass 的引用,但实际上它指向 ChildClass 对象。当调用 display() 方法时,它将执行 ChildClass 中的方法,即使它通过 ParentClass 引用调用。
父类方法的访问控制
父类方法的访问控制决定了子类可以访问哪些方法。有以下几种访问控制修饰符:* public:允许所有类访问。
* protected:允许子类和同一包中的类访问。
* default (package-private):仅允许同一包中的类访问。
* private:只能在类本身内部访问。
子类只能继承访问控制修饰符较宽(即更宽松)的方法。例如,如果父类中的方法是 protected,则子类可以将其覆盖为 public,但不能将其覆盖为 private。
使用方法调用父类方法
有时,子类需要调用其父类中的原始方法。为此,它可以使用 super 关键字。super 关键字引用父类对象,允许访问父类的方法和变量。
class ParentClass {
public void display() {
("Parent class method");
}
}
class ChildClass extends ParentClass {
@Override
public void display() {
();
("Child class method");
}
}
在上面的示例中,ChildClass 中的 display() 方法首先调用父类的 display() 方法,然后打印它自己的消息。
父类方法在 Java 继承和多态中发挥着至关重要的作用。它们允许子类扩展或修改父类中的行为,同时保持其基本功能。理解方法继承、重写、多态和访问控制对于创建健壮和可维护的代码至关重要。
2024-10-18
下一篇:Java 数据类型转换规则

PHP无法删除文件:排查及解决方法大全
https://www.shuihudhg.cn/126791.html

Python 列表转换为字符串:多种方法及性能比较
https://www.shuihudhg.cn/126790.html

Python字符串空格去除:方法详解及性能比较
https://www.shuihudhg.cn/126789.html

PHP连接与操作多种数据库:MySQL、PostgreSQL、SQLite及其他
https://www.shuihudhg.cn/126788.html

高效Python JSON数据更新:方法、技巧与最佳实践
https://www.shuihudhg.cn/126787.html
热门文章

Java中数组赋值的全面指南
https://www.shuihudhg.cn/207.html

JavaScript 与 Java:二者有何异同?
https://www.shuihudhg.cn/6764.html

判断 Java 字符串中是否包含特定子字符串
https://www.shuihudhg.cn/3551.html

Java 字符串的切割:分而治之
https://www.shuihudhg.cn/6220.html

Java 输入代码:全面指南
https://www.shuihudhg.cn/1064.html