05-方法重写

方法重写

在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写(Override)
加上@Override可以让编译器帮助检查是否进行了正确的覆写。

例如,在Person类中,我们定义了run()方法:

class Person {
    public void run() {
        System.out.println("Person.run");
    }
}

在子类Student中,覆写这个run()方法:

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

Override和Overload不同的是,如果方法签名如果不同,就是Overload,Overload方法是一个新方法;如果方法签名相同,并且返回值也相同,就是Override
总结:需要和父类方法一模一样,只是方法体不一样

final

继承可以允许子类覆写父类的方法。如果一个父类不允许子类对它的某个方法进行覆写,可以把该方法标记为final。用final修饰的方法不能被Override

对于一个类的实例字段,同样可以用final修饰。用final修饰的字段在初始化后不能被修改

可以在构造方法中初始化final字段,这种方法更为常用,因为可以保证实例一旦创建,其final字段就不可修改。

class Person {
    public final String name;
    public Person(String name) {
        this.name = name;
    }
}
原文地址:https://www.cnblogs.com/shenleg/p/14164249.html