【Java 方法重写】@Override 注解,一般用法,重写的具体要求

在这里插入图片描述

博主:_LJaXi Or 東方幻想郷
专栏: Java | 从入门到入坟

从前有一只小鸟,它的父母都是优秀的飞行员,它也很想成为一名出色的飞行员。于是,它开始学习飞行技巧,不断练习,最终成为了一名出色的飞行员。

但是,有一天,它发现自己的飞行技巧已经达到了瓶颈,无法再进一步提升。于是,它开始思考如何突破这个瓶颈,最终想到了一个办法:重新学习飞行技巧。
它开始重新学习飞行技巧,不断地试错、调整,最终成功地学会了新的飞行技巧,成为了一名更加出色的飞行员。

这个小故事告诉我们,有时候我们需要不断地学习、尝试、调整,才能突破自己的瓶颈,成为更加出色的人。而在Java中,重写就是一种突破瓶颈的方式,通过重写父类的方法,我们可以实现更加灵活、高效的代码。


关于 Java 重写

  • 何が Java の 重写?
  • @Override 注解の作用
  • 方法重写的规则
  • 什么情况下会进行方法重写?
  • Java 重写的小案例

何が Java の 重写?

  1. Java中的方法重写(Method Overriding)是指在子类中定义一个与父类中同名、同参数列表、同返回值类型的方法,从而覆盖父类中的方法实现。当子类对象调用该方法时,会优先调用子类中的方法实现,而不是父类中的方法实现。
  2. 需要注意的是,方法重写只能在继承关系中发生,即子类重写父类的方法。如果两个类之间没有继承关系,就不能进行方法重写
  3. 方法重写的目的是为了实现多态性,让不同的子类对象调用同一个方法时,可以根据实际类型来执行不同的方法实现。

@Override 注解の作用

  1. @override注解是告诉编译器,下面的方法是重写父类的方法
  2. 如果不写@override注解去直接重写方法,编译器是不会判断你是不是正确重写了父类中的方法的。
  3. 如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。
  4. 当你写了@override注解时,程序会判断你是否正确的重写了父类的对应方法。
  5. 而且加上此注解后,程序会自动屏蔽父类的方法。

方法重写的规则

  1. 方法名、参数列表和返回值类型必须与父类中被重写的方法相同。
  2. 访问修饰符不能比父类中被重写的方法的访问修饰符更严格。例如,如果父类中被重写的方法是public,那么子类中重写的方法也必须是public或者protected,不能是private。
  3. 子类中重写的方法不能抛出比父类中被重写的方法更多的异常,或者抛出未在父类中声明的异常。
  4. 子类中重写的方法不能使用比父类中被重写的方法更严格的访问修饰符。例如,如果父类中被重写的方法是protected,那么子类中重写的方法不能是private。

什么情况下会进行方法重写?

方法重写通常发生在继承关系中,当子类需要对父类的某个方法进行特定的实现时,就可以通过方法重写来实现。

Java 重写的小案例

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void introduce() {
        System.out.println("我叫" + name + ",今年" + age + "岁。");
    }
}

public class Student extends Person {
    private String school;

    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }

    @Override
    public void introduce() {
        System.out.println("我叫" + getName() + ",今年" + getAge() + "岁,就读于" + school + "。");
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
}

在这个案例中,子类Student重写了父类Person的introduce()方法,并且添加了一个新的属性school。在子类中,我们可以通过super关键字来调用父类的构造方法和方法,也可以通过this关键字来调用子类自己的属性和方法。

你可能感兴趣的:(Java,从入门到入坟,jvm,intellij-idea,java,开发语言)