java重载和重写的区别和联系的例题
在Java中,重载(Overloading)和重写(Overriding)是两个不同的概念,它们分别用于描述不同的编程特性。
重载(Overloading):
重载指的是在同一个类中,可以定义多个方法,它们具有相同的名字但是参数列表不同(包括参数的类型、个数或顺序)。重载的方法可以有不同的返回类型,但不能仅仅依靠返回类型的不同来进行重载。
# 例题:
```java
public class Calculator {
   
    public int add(int a, int b) {
        return a + b;
    }
    public double add(double a, double b) {
        return a + b;
    }
    public String concatenate(String a, String b) {
        return a + b;
    }
}
```
在上面的例子中,`Calculator` 类包含了两个名为 `add` 的方法,它们的参数类型不同。这就是方法重载的例子。
重写(Overriding):
重写是指子类重新定义了父类中已经定义的方法,使得子类可以提供自己的实现。被重写的方法在父类和子类中具有相同的方法签名(方法名、参数列表、返回类型都相同)。
# 例题:
```java
class Animal {
    public void makeSound() {
        System.out.println("Animal makes a sound");
    }
}
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks");
    }
}
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat meows");
    }
}
```
在上面的例子中,`Dog` 和 `Cat` 类都重写了 `Animal` 类中的 `makeSound` 方法。
区别和联系:
1. 方法签名不同:重载的方法必须具有不同的参数列表,而重写的方法必须具有相同的方法签名。
2. 发生位置:重载发生在同一个类中,而重写发生在子类中覆盖父类的方法。
3. 目的不同:重载是为了提供多个方法,以处理不同的参数类型或个数。重写是为了在子类中提供对父类方法的自定义实现。
4. 运行时多态性:重写实现了运行时的多态性,即通过父类引用可以调用子类对象的方法。重载在编译时确定。
java重载
5. 返回类型:重载的方法可以有不同的返回类型,但重写的方法必须有相同的返回类型或其子类型。
总的来说,重载和重写是Java中面向对象编程的两个重要概念,它们分别用于提供更灵活的方法调用和实现多态性。