重载和重写的定义和区别

Java中的重载(Overloading)和重写(Overriding)是面向对象编程中的两个重要概念。

重载

是指在同一个类中定义多个同名的方法,但它们的参数列表不同(包括参数的个数、类型或顺序)。重载方法具有相同的名称,但是由于参数不同,Java编译器可以根据调用时提供的参数类型和数量,自动选择合适的方法进行调用。重载方法可以有不同的返回类型,但是不能仅根据返回类型来区分重载。

下面是一个重载的例子:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

上述代码中,Calculator类定义了两个名为add的方法,一个接收两个整数参数,另一个接收两个浮点数参数。通过方法的参数类型区分,可以在调用时选择合适的方法。

重写

是指在继承关系中,子类重新定义父类中已经存在的方法,但是方法名、参数列表和返回类型都保持一致。重写方法用于在子类中提供特定于子类的实现。子类的重写方法必须具有相同的方法签名,即方法名和参数类型与父类方法一致,返回类型可以是相同类型或其子类型。

下面是一个重写的例子:

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

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow");
    }
}

在上述代码中,Animal类定义了一个名为makeSound的方法,而Cat类继承自Animal类并重写了makeSound方法。当调用makeSound方法时,如果对象是Animal类型,则输出"Animal makes sound";如果对象是Cat类型,则输出"Meow"。这就是重写的作用,允许子类对父类的方法进行特定实现。

重载和重写的区别

重载方法在同一个类中定义,参数列表不同,根据参数选择合适的方法。

重写方法在继承关系中定义,子类重新定义父类的方法,提供特定实现。



知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

相关推荐

暂无评论

目录展开