Java override

时间:2014-09-19 17:41:45   收藏:0   阅读:438

扩展《编程导论(Java)·2.1.3》的内容,收集override内容.


方法改写(method overriding)是指对于父类定义的一个实例方法,允许子类提供自己的实现的一种语言特性。子类的实现将改写(override)或取代(replace)父类中的实现。

改写成功必须“同时”满足下列条件。

方法签名(signature)指一个方法的名字和形参列表。a method‘s signature is its name and the number and the type of its arguments.。而重载方法的方法签名必须不同。签名不同的方法,是两个不同的方法。
public interface Sup{   
    public void copy();
}   
class Sub implements Sup{
    @Override public void copy(){   
        System.out.println("override"); 
        throw new NullPointerException();
    }
} 
编译器不管RuntimeException。
父类的private方法,子类不继承,因而对子类而言毫无意义,如同不存在。

父类的static方法foo(),如果能够继承,子类可以按照改写的要求如访问权限更公有、返回值类型相同等,编写方法签名相同的静态方法,但是,前面不能够加@Override。两者并列存在。方法隐藏:在子类中直接调用foo(),则执行自己定义的静态方法。如果没有自己定义的foo()——只有一个继承于父类的static方法foo(),在子类中直接调用foo(),显然执行唯一的foo()。所以,自己定义的静态方法挡住了父类的方法。

在可以继承的前提下:

父类的实例方法,子类可以override一个实例方法,但是子类不得定义签名相同的static方法-编译错误。

父类的静态方法,子类可以编写隐藏性的静态方法,但是子类不得定义签名相同的实例方法-编译错误。

overriding与overloading

如同比较男生和女生。改写是运行时机制,而重载是编译时机制。只有读源代码时才有比较的价值,或者说,只有考试时才有比较的价值。


bubuko.com,布布扣

原文:http://blog.csdn.net/yqj2065/article/details/39399323

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!