Java 继承中方法调用的规则215
在 Java 编程语言中,继承是类之间的一种关系,允许派生类(子类)继承基类(父类)的属性和方法。当涉及到方法调用时,继承引入了某些规则和约定,这些规则对理解 Java 程序的行为至关重要。
方法重写
当派生类定义了与基类中同名的方法时,称为方法重写。在这种情况下,派生类的方法将覆盖基类的方法,并且当调用该方法时,将执行派生类中的版本。方法重写是一种常见的技术,用于在派生类中提供扩展或修改基类行为的新实现。class Base {
public void print() {
("Base class print method");
}
}
class Derived extends Base {
@Override
public void print() {
("Derived class print method");
}
}
public class Main {
public static void main(String[] args) {
Base base = new Base();
(); // Output: "Base class print method"
Derived derived = new Derived();
(); // Output: "Derived class print method"
}
}
方法隐藏
与方法重写不同,方法隐藏发生在派生类定义了一个与基类中同名但参数列表不同的方法时。在这种情况下,派生类中的方法不会覆盖基类中的方法,而是隐藏它。当调用带有隐藏参数列表的方法时,将执行基类中的版本。class Base {
public void print(int value) {
("Base class print method with int parameter: " + value);
}
}
class Derived extends Base {
public void print(String value) {
("Derived class print method with String parameter: " + value);
}
}
public class Main {
public static void main(String[] args) {
Base base = new Base();
(10); // Output: "Base class print method with int parameter: 10"
Derived derived = new Derived();
("Hello"); // Output: "Base class print method with int parameter: Hello"
}
}
super 关键字
super 关键字用于从派生类访问基类的方法或属性。它可以在以下情况下使用:* 调用基类中的隐藏方法:当派生类定义了一个与基类中同名但参数列表不同的方法时,可以使用 super 关键字来调用基类中的隐藏方法。
* 访问基类的属性:派生类可以使用 super 关键字来访问基类的私有或受保护的属性。
class Base {
private int value;
public void setValue(int value) {
= value;
}
}
class Derived extends Base {
public void printValue() {
("Value: " + ); //访问基类的私有属性
}
}
public class Main {
public static void main(String[] args) {
Derived derived = new Derived();
(10);
(); // Output: "Value: 10"
}
}
构造器调用
当一个派生类构造器被调用时,它会自动调用基类的构造器。基类的构造器可以显式或隐式地调用,具体取决于派生类构造器的声明。* 显式调用:派生类构造器可以通过使用 super(参数列表) 语法显式地调用基类的构造器。
* 隐式调用:如果没有显式调用基类的构造器,则派生类构造器会隐式调用基类的无参构造器(即不带任何参数的构造器)。
如果基类没有无参构造器,则派生类必须显式调用基类的构造器,否则编译器将报告错误。
class Base {
public Base() {
("Base class constructor");
}
public Base(int value) {
this(); //显式调用无参构造器
("Base class constructor with parameter: " + value);
}
}
class Derived extends Base {
public Derived() {
super(10); //显式调用带参数的构造器
}
}
public class Main {
public static void main(String[] args) {
Derived derived = new Derived();
// Output: "Base class constructor"
// Output: "Base class constructor with parameter: 10"
}
}
Java 中的继承引入了方法调用的一些特定规则和约定,包括方法重写、方法隐藏、super 关键字和构造器调用。理解这些规则对于编写和调试 Java 程序至关重要,因为它确保了正确的方法解析和执行。
2024-11-18
Java方法栈日志的艺术:从错误定位到性能优化的深度指南
https://www.shuihudhg.cn/133725.html
PHP 获取本机端口的全面指南:实践与技巧
https://www.shuihudhg.cn/133724.html
Python内置函数:从核心原理到高级应用,精通Python编程的基石
https://www.shuihudhg.cn/133723.html
Java Stream转数组:从基础到高级,掌握高性能数据转换的艺术
https://www.shuihudhg.cn/133722.html
深入解析:基于Java数组构建简易ATM机系统,从原理到代码实践
https://www.shuihudhg.cn/133721.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