重载与重写
1. 方法的重载
重载(Overloading)是指在同一个类中,可以定义多个方法,它们具有相同的名称但不同的参数列表。编译器根据方法的参数列表来确定调用哪个重载版本的方法。
public class Person { int id; String name; int age; // 无参构造 public Person() { } // 有参构造 public Person(String name){ this.name=name; } public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } }
如上代码是 在 Person 类内有两个构造方法(无参构造与有参构造),当一个类内出现无参构造与有参构造时,说明这个类是方法的重载。
public Person(int id, String name, int age) 构造方法,作用是创建类的对象,并将传入的参数分别赋给对象相应的属性。
2. 重写
重写(Override)是面向编程中的重要概念,允许子类重新定义父类已定义的方法,以适应子类已特定的需求。重写发生在继承关系中,子类继承了父类的方法。在需要时进行修改或扩展。
- 重写方法具有相同的方法名、参数列表和返回类型。
- 重写方法的访问修饰符不能比父类中被重写方法的访问修饰符更严格(例如,父类中的方法是 public,则子类中的重写方法也必须是 public 或者 protected,但不能是 private)。
- 重写方法不能比父类中被重写方法抛出更多的异常,它们可以抛出相同的异常或者不抛出异常,但不能抛出更多的异常。
- 重写方法必须具有与父类中被重写方法相同或者更宽松的访问权限(即,子类中的重写方法不能比父类中的方法访问权限更严格)。
- 重写方法可以调用父类中被重写方法的实现,使用
super关键字。
当子类重写了父类的方法后,当通过子类对象调用该方法时,实际上会执行子类中的重写版本的方法,而不是父类中原始的方法。
这样可以实现多态性,让不同的子类对象表现出不同的行为,提高了代码的灵活性和可扩展性。
// 父类 class Animal { public void makeSound() { System.out.println("Animal makes a sound"); } } // 子类 class Dog extends Animal { // 重写父类的 makeSound 方法 @Override public void makeSound() { System.out.println("Dog barks"); } }
注意:重写与重载没有直接的关系,但都涉及到了方法的定义和使用。

浙公网安备 33010602011771号