你好,我是学化学的小白。重写和重载是一个对我来说比较容易混淆的概念,主要是这两个单词翻译都有重字,太像了。代码中使用最多的还是override(重写),用于子类对父类方法的继承中。
下面来来区分一下吧。
在Java 中,重写 (Override) 和重载 (Overload) 是两种不同的方法声明方式,它们的主要区别在于它们影响的类和实现的具体方法数量。
重写是指将父类方法声明为此方法的一个更小或更易于使用的别名。这意味着在子类中声明的方法与父类方法具有相同的名称和参数列表,但子类方法的实现与父类方法不同。因此,子类方法可以替代父类方法,使其行为不同。重写通常用于实现继承中的多态性。
重载是指在同一类中声明多个同名方法,但它们的参数列表不同。重载允许您为同一方法声明多个不同参数列表的方法,这些方法可以具有不同的参数类型和数量。重载通常用于实现方法的多功能性,例如在数组和字符串中操作字符串的方法。
下面是一个简单的示例来演示重写和重载的区别:
class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("The cat meows");
}
}
// 此处为重载
class Animal {
public void makeSound(String sound) {
System.out.println(sound + " is the sound the animal makes");
}
}
// 使用重写和方法重载
Dog myDog = new Dog();
Cat myCat = new Cat();
myDog.makeSound(); // 输出 "The dog barks"
myCat.makeSound("meow"); // 输出 "meow is the sound the cat meows"
myDog.makeSound("bark"); // 运行时错误,因为 Dog 没有实现 bark 方法
在上面的示例中,Animal
类中的方法makeSound
被重写为Dog
和Cat
类的同名方法,它们分别实现了不同的子类行为。同时,Animal
类中的方法makeSound
也被重载为具有不同参数列表的方法,这些方法可以具有不同的参数类型和数量,但它们都实现了相同的行为。
还有一些难得用法成为大佬的时候再学吧,一起加油!!