第1关:练习-Java继承和多态之方法重载
时间: 2025-06-22 11:48:21 浏览: 16
### Java 中的继承与多态
#### 继承
Java 使用 `extends` 关键字实现类之间的继承关系。子类可以从父类继承字段和方法,从而减少重复代码并提高可维护性[^1]。
```java
class Animal {
static {
System.out.println("Animal static{}");
}
{
System.out.println("Animal{}");
}
public Animal() {
System.out.println("Animal()");
}
}
class Dog extends Animal {
static {
System.out.println("Dog static()");
}
{
System.out.println("Dog{}");
}
public Dog() {
System.out.println("Dog()");
}
}
```
当创建一个新的 `Dog` 对象时,程序会按照以下顺序执行:
1. 执行父类中的静态初始化块。
2. 执行子类中的静态初始化块。
3. 调用父类的构造函数。
4. 执行父类中的实例初始化块。
5. 执行子类中的实例初始化块。
6. 调用子类的构造函数[^2].
```java
public class Test {
public static void main(String[] args) {
Dog dog1 = new Dog();
}
}
```
#### 多态
多态允许子类重写父类的方法,并在运行时决定调用哪个版本的方法。这使得代码更加灵活和易于扩展[^4]。
```java
class Employee {
public void working() {
System.out.println("employee working...");
}
public void eat() {
System.out.println("emp eating...");
}
}
class SalesMan extends Employee {
@Override
public void working() {
System.out.println("salesman working");
}
public void salesShow() {
// 子类特有的方法
}
}
public class Test {
public static void main(String[] args) {
Employee emp = new SalesMan();
emp.working(); // 输出 "salesman working"
emp.eat(); // 输出 "emp eating..."
// 下面这一行将导致编译错误,因为Employee类中不存在此方法
// emp.salesShow();
}
}
```
在这个例子中,虽然变量 `emp` 的声明类型是 `Employee`,但实际上它指向的对象是一个 `SalesMan` 实例。因此,当调用 `working()` 方法时,实际执行的是 `SalesMan` 类中定义的那个版本。
#### 方法重载
方法重载是指在一个类中有多个同名但参数列表不同的方法。这些差异可以通过改变参数的数量、类型或顺序来体现。需要注意的是返回值的不同不足以构成重载条件。
```java
class Calculator {
int add(int a, int b){
return a+b;
}
double add(double a,double b){
return a+b;
}
String add(String s1,String s2){
return s1+s2;
}
}
```
以上展示了如何在同一类内通过不同类型的参数实现相同名称的方法重载。
阅读全文
相关推荐



















