专业编程基础技术教程

网站首页 > 基础教程 正文

[java基础] java中重载和重写的区别

ccvgpt 2024-08-19 12:22:36 基础教程 8 ℃

Java中,重载(Overloading)和重写(Overriding)都是面向对象编程中的概念,但它们的含义和作用不同。

重载是指在同一个类中,可以定义多个方法,这些方法的方法名相同,但参数列表不同(参数类型、个数或顺序不同),以便处理不同的参数类型或参数个数的情况。重载的方法必须在参数列表中有所不同,否则编译时会出现重复定义方法的错误。重载是编译时多态的一种体现,即在编译时根据方法的参数列表决定调用哪个方法。

[java基础] java中重载和重写的区别

重写是指子类对父类的某个方法进行重新实现,使得子类能够拥有自己的行为实现。重写方法的方法名、返回值类型、参数列表都必须与被重写的父类方法相同。重写方法的访问权限不能比被重写的父类方法更严格。重写是运行时多态的一种体现,即在运行时根据对象的实际类型来确定调用哪个方法。

总之,重载和重写是Java中的两个重要的面向对象编程的概念。重载允许在同一个类中定义多个方法,以便处理不同的参数类型或参数个数的情况;而重写则是子类对父类方法进行重新实现,使得子类能够拥有自己的行为实现。

重载的例子:

public class Calculator {
    public int add(int x, int y) {
        return x + y;
    }

    public double add(double x, double y) {
        return x + y;
    }
}

上面的代码中,定义了两个名为add的方法,一个是用于两个整数相加,另一个是用于两个浮点数相加。由于参数类型不同,Java可以通过方法的参数类型来区分它们。

重写的例子:

public class Shape {
    public void draw() {
        System.out.println("绘制形状");
    }
}

public class Circle extends Shape {
    public void draw() {
        System.out.println("绘制圆形");
    }
}

public class Square extends Shape {
    public void draw() {
        System.out.println("绘制正方形");
    }
}

上面的代码中,Shape是一个父类,其中定义了一个名为draw的方法。Circle和Square都是Shape的子类,它们都重写了父类中的draw方法,并且实现了自己的行为,使得它们分别可以打印出"绘制圆形"和"绘制正方形"。在运行时,如果创建一个Circle或Square对象并调用它们的draw方法,则会执行子类中的方法,而不是父类中的方法。

最近发表
标签列表