Java 面向对象—重写(Override)与重载(Overload)

在Java中,重写(Overriding)和重载(Overloading)是两种不同的概念,它们都用于实现多态性,但具体实现方式和应用场景有所不同。

1. 重写(Overriding)


重写是指在子类中重新定义与父类方法具有相同方法名、参数列表和返回类型的方法。重写的方法可以实现对父类方法的特定实现,以适应子类的需求。

重写的方法必须满足以下条件:
- 方法名、参数列表和返回类型必须与父类方法相同。
- 访问权限不能比父类方法更低(例如,父类方法是 public,子类方法不能为 private)。
- 子类方法抛出的异常类型不能比父类方法抛出的异常类型范围大。示例:

class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

class Dog extends Animal {
    public void makeSound() {
        System.out.println("The dog barks");
    }
}

class Cat extends Animal {
    public void makeSound() {
        System.out.println("The cat meows");
    }
}

在这个示例中,`Dog`类和`Cat`类都重写了`Animal`类中的`makeSound`方法。

2. 重载(Overloading)


重载是指在同一个类中,定义多个方法名相同但参数列表不同的方法。编译器根据方法的参数列表来决定调用哪个方法。

重载的方法必须满足以下条件:
- 方法名必须相同。
- 参数列表必须不同(参数类型、个数、顺序至少有一个不同)。
- 与返回值类型、访问修饰符无关。

示例:

class Example {
    public void print(int a) {
        System.out.println("Print int: " + a);
    }

    public void print(double a) {
        System.out.println("Print double: " + a);
    }

    public void print(String a) {
        System.out.println("Print string: " + a);
    }
}

在这个示例中,`Example`类定义了三个重载的`print`方法,分别接受`int`、`double`和`String`类型的参数。

总结


重写和重载都用于实现多态性,但它们的实现方式和应用场景有所不同。重写主要用于子类对父类方法的特定实现,适用于子类和父类之间的继承关系。重载主要用于在同一个类中定义多个功能相似的方法,适用于处理不同类型或个数的参数。

下篇将介绍多态性!!

新人求关注,若有不足请大神指出

你可能感兴趣的:(Java基础,java)