JAVA学习不懂的累计DAY53

在这种情况下,如果我们不小心拼写错误,例如写成 public void rn() { ... },编译器不会报错,但实际运行时会调用父类的 run 方法,这不是我们想要的行为。

使用 @Override 注解的原因 当我们在类里创建一个函数 希望它当我们拼写错时被发现,不然当运行时我们构造的run因为拼写错误会使用父类的run

现在,我们在子类中使用 @Override 注解:


java

复制代码

class Person { public void run() { System.out.println("Person is running"); } } class Student extends Person { @Override public void run() { System.out.println("Student is running"); } } class Teacher extends Person { @Override public void run() { System.out.println("Teacher is running"); } }

  • 编译时检查:如果在 StudentTeacher 类中方法名拼写错误(例如 public void rn()),编译器会报错,提醒你没有正确重写父类的方法。
  • 可读性:其他开发者一看到 @Override 注解,就知道这个方法是对父类方法的重写。

总结

@Override 注解在Java中起到了编译时检查、提高代码可读性和维护性的作用。强烈建议在重写父类方法时总是使用 @Override 注解,以确保代码的正确性和易读性

如果父类Personrun()方法没有实际意义,能否去掉方法的执行语句?

答案是不行,会导致编译错误,因为定义方法的时候,必须实现方法的语句。

当你不像初始化(我理解的)父类你可以偷懒写抽象

因为抽象类本身被设计成只能用于被继承,因此,抽象类可以强迫子类实现其定义的抽象方法,否则编译会报错。因此,抽象方法实际上相当于定义了“规范”。

例如,Person类定义了抽象方法run(),那么,在实现子类Student的时候,就必须覆写run()方法:

public class Main {
    public static void main(String[] args) {
        Person p = new Student();
        p.run();
    }
}

abstract class Person {
    public abstract void run();
}

class Student extends Person {
    @Override
    public void run() {
        System.out.println("Student.run");
    }
}

接口 

interface

所谓interface,就是比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)。

当一个具体的class去实现一个interface时,需要使用implements关键字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值