Java 基础之方法重写详解
什么是方法重写?
在 Java 中,方法重写是指子类中定义了和父类中方法名称、参数列表以及返回值类型均相同的一个方法,并且该子类中这个方法的访问权限要大于等于父类中此方法的访问权限。当调用该方法时,子类对象会优先执行自身中的方法,而不是执行父类中的同名方法。
方法重写的注意事项
在进行方法重写的时候,需要注意以下几点:
- 方法名称、参数列表、返回值类型必须与父类中的对应方法相同;
- 方法的访问权限修饰符不能比父类中对应方法的访问权限修饰符更低(也就是说,子类中重写的方法的访问权限必须大于父类中对应方法的访问权限);
- 子类中可以使用 super 关键字调用父类中对应的方法;
- 如果父类中的方法声明了 final 修饰符,则不能被子类重写;
- 如果父类中的方法声明了 static 修饰符,则不能被子类重写,但可以在子类中定义同名同参数列表但不带 static 修饰符的方法。
方法重写的示例
以下是一个简单的示例,演示了如何在子类中重写一个父类的方法:
class Animal {
public void makeSound() {
System.out.println("The animal is making a sound");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.makeSound(); // Output: The animal is making a sound
Cat cat = new Cat();
cat.makeSound(); // Output: Meow
}
}
在上面的示例中,Animal
类中定义了一个 makeSound()
方法,用于输出动物发出的声音。Cat
类继承了 Animal
类,并重写了 makeSound()
方法,改成了输出猫叫的声音。在 Main
类中,我们先创建了一个 Animal
类对象,调用了 makeSound()
方法,输出了 The animal is making a sound
。接着,我们创建了一个 Cat
类对象,调用了 makeSound()
方法,输出了 Meow
。
以下是另一个示例,演示了子类中可以使用 super 关键字调用父类中对应的方法:
class Person {
public void sayHello() {
System.out.println("Hello");
}
}
class Student extends Person {
@Override
public void sayHello() {
super.sayHello(); // 调用父类中的 sayHello() 方法
System.out.println("I am a student");
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.sayHello(); // Output: Hello \n I am a student
}
}
在上面的示例中,Person
类中定义了一个 sayHello()
方法,用于输出 Hello
。Student
类继承了 Person
类,并重写了 sayHello()
方法,在其中先通过 super.sayHello()
调用了父类中的 sayHello()
方法,然后输出了 I am a student
。在 Main
类中,我们创建了一个 Student
类对象,调用了 sayHello()
方法,输出了 Hello
和 I am a student
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基础之方法重写详解 - Python技术站