您的位置:首页 > 编程语言 > Java开发

JAVA中 @Override 的作用

2016-11-15 18:52 260 查看
最近在做项目,经常会出现interface的上层impl类出现未实现类方法错误,或者出现实现方法不正确错误。

特此总结下@Override的作用

  ● 方便读码(告诉读代码的人,这是一个复写的方法)

  ● 验证作用(验证@Override下面的方法名是否是你父类中所有的,如果没有则报错)

package com.ibm.dietime1943.test;

public class Father {

    public void doFather(){}
    
    private void doFather2(){}
    
    final void doFather3(){}
    
    static void doFather4(){}
}

class Son extends Father{

    @Override
    public void doFather(){}
    
    @Override
    public void dofather(){} // compilation error: 方法名书写错误,父类中没有 dofather()方法
    
    @Override
    private void doFather2(){} //compilation error: 父类方法为private类型,无法被重写
    
    @Override
    final void doFather3(){} //compilation error: 父类方法为final类型,无法被重写
    
    @Override
    static void doFather4(){} //compilation error: 父类方法为static类型,无法被重写
}
 

第15行-22行的代码如果都去掉了@Override这样编译就不会出错,但是这样3个方法却不是重写方法,而是在子类追加的新的方法。

第29行:静态的方法可以被继承,但是不能重写。
最近在总结rivate和重写相关,越发的感觉JAVA在OO上面的多态和封装的好处。

Private 方法只作用域当前class内部,外部无法被使用,更好的得到保护以及更有利于今后的重构。

想到之前有个大牛面试问题:Public和Private的本质区别是什么?

--成本高与低的区别,当我最近做项目和回顾Javaskill的时候突然秒懂了这个答案。

静态的方法可以被继承,但是不能重写。

我的另一篇相关文章:Java重写的7个规则



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: