Java重写和重载在编译时抛出错误?

时间:2011-05-12 07:25:38

标签: java oop polymorphism overloading override

我一直在编写关于方法重载和方法覆盖的几个例子。 方法重载是静态多态,覆盖是动态多态。

因此,任何与重载相关的错误都会在编译时被捕获。正确吗?还是有任何因为不正确的重载而抛出运行时异常的情况 - 我怀疑

与方法覆盖相关的任何错误( - 当子类方法与Base类同名并且与基类相同的参数时)将在编译时抛出。

在上述两种情况下,是否存在运行时出现异常的情况?

2 个答案:

答案 0 :(得分:2)

  

所以任何与重载相关的错误   将在编译时被捕获   时间......对不对?还是有的   运行时异常的场景   抛出因为不正确   超载 - 我怀疑

如果方法中的代码没有抛出任何运行时异常,那就不应该。

  

与方法相关的任何错误   压倒( - 当孩子   class方法与Base同名   类和基数相同的参数   class ----)将在编译时抛出   时间。

这就是所谓的覆盖。如果它不在那里,那么如果你使用@Override

,它可能会抛出编译时错误

答案 1 :(得分:1)

我无法想象方法重载如何导致运行时异常。

某些情况下,不正确/不完整的方法覆盖会导致运行时异常:

  1. 基本方法是抽象的,而它没有由子类实现 - 这可能发生,当父类重新编译时添加新方法,而子类没有重新编译(错误的懒惰编译,或位于不同的jar中的类)等)
  2. Overriden method is called from the constructor of a base class
  3. 与1相关:基本方法不是抽象的,但签名已更改,而子类未重新编译。所以它没有引起编译错误,并且会在运行时飞行。