java重写和重载的区别 - 面试宝典
【摘要】 Java中的重写(Override)和重载(Overload)是两个重要的概念。 重写是指在子类中重新定义父类中已有的方法,方法名、参数列表和返回值类型必须与父类中的方法一致。通过重写,子类可以修改父类方法的实现,实现自己的逻辑。 重载是指在一个类中定义多个相同名称但参数列表不同的方法,可以有不同的返回值类型。通过重载,同一个类可以根据不同的参数列表来执行不同的操作。 总结区别如下:重写是子...
Java中的重写(Override)和重载(Overload)是两个重要的概念。 重写是指在子类中重新定义父类中已有的方法,方法名、参数列表和返回值类型必须与父类中的方法一致。通过重写,子类可以修改父类方法的实现,实现自己的逻辑。 重载是指在一个类中定义多个相同名称但参数列表不同的方法,可以有不同的返回值类型。通过重载,同一个类可以根据不同的参数列表来执行不同的操作。 总结区别如下:
- 重写是子类对父类方法的重新定义,重载是同一个类中定义多个相同名称的方法。
- 重写需要保持方法名、参数列表和返回值类型与父类方法一致,重载只需要保持方法名相同但参数列表不同。
- 重写是动态绑定的,即在运行时根据实际对象类型调用相应的方法,重载是静态绑定的,即在编译时根据方法参数类型和数量确定调用的方法。 举个例子来说明:
javaCopy codeclass Parent {
public void print() {
System.out.println("Parent's print method");
}
}
class Child extends Parent {
@Override
public void print() {
System.out.println("Child's print method");
}
public void print(int num) {
System.out.println("Child's overloaded print method with parameter: " + num);
}
}
public class Main {
public static void main(String[] args) {
Parent parent = new Parent();
parent.print(); // 输出: Parent's print method
Child child = new Child();
child.print(); // 输出: Child's print method
child.print(10); // 输出: Child's overloaded print method with parameter: 10
}
}
在上面的例子中,Child类重写了Parent类的print方法,并且还定义了一个重载的print方法。在创建Child类的对象时,可以根据需要调用不同的方法。
好的,下面给出一个更具体的示例代码:
javaCopy codeclass Shape {
public void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
class Square extends Shape {
@Override
public void draw() {
System.out.println("Drawing a square");
}
}
public class Main {
public static void main(String[] args) {
Shape shape = new Shape();
shape.draw(); // 输出: Drawing a shape
Circle circle = new Circle();
circle.draw(); // 输出: Drawing a circle
Square square = new Square();
square.draw(); // 输出: Drawing a square
}
}
在上面的示例代码中,我们定义了一个Shape
类和两个子类Circle
和Square
。Shape
类中有一个draw
方法,分别在子类Circle
和Square
中进行了重写。在Main
类中,我们创建了一个Shape
对象、一个Circle
对象和一个Square
对象,并分别调用它们的draw
方法。根据对象的实际类型,会调用相应的重写方法。输出结果显示了不同对象的不同行为。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)