【Java 小实验】重写(覆写 Override)返回值类型能不能相同

背景

每次看到重写那里写着:

重写机制是指子类的方法的方法名、参数表、返回值与父类中被重写的方法都相同,而方法体不同。

而重载是:

方法名与父类中的相同,而参数表不同,则属于同名方法的重载。

本来的感觉是只要参数表相同就不是了重载了,那就该是重写了吧。但是书上的那句话却明明写着返回值也相同。所以要试试。

实验

class dad {
    void chouyan(int num) {
        System.out.println("哈哈,我每天抽 " + num + "根烟!" );
    }
}

class sun extends dad {
//    下面的会提示错误:
//    Multiple markers at this line
//    - The return type is incompatible with 
//     dad.chouyan(int)
    int chouyan(int num) {
        System.out.println("我不会抽烟,把烟还给你");
        return num;
    }
}

显而易见,返回值也要相同的!

最后

了了一件心事。暂时先把这个当成一个现实,这么做肯定有它的原因。至于判断好像涉及到了编译原理的内容,还用静态编译啊动态编译之类的……现在还不懂,以后再说。

posted @ 2013-12-04 12:38  t1m  阅读(767)  评论(0)    收藏  举报