2011-05-12 181 views
2

我一直在编写方法重载和方法重载的几个例子。 方法重载是静态多态,重写是动态多态。Java重写和重载在编译时抛出错误?

因此与重载任何错误将在编译time..Correct被捕获或者是当有一个运行时异常,因为不正确超载引发的任何场景 - 我怀疑

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

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

回答

1

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

一些场景时不正确/不完整的方法重载可能导致运行时异常:

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

@Tarlog ..... kool .. 2场景确实有意义.. – crackerplace 2011-05-12 07:43:47

+0

我又增加了一个:) – Tarlog 2011-05-12 07:46:04

+0

@Tarlog ..... kool .. 2场景确实有意义。 。但是这些编译类型的问题可能会造成同样的问题,重载也..wherin我重载在一个孩子类。现在当我改变基类编译它,我不编译子类 - >笏你说? – crackerplace 2011-05-12 07:49:37

2

因此与超载 任何错误将在编译 time..Correct被捕获或者是否有任何 场景时,运行时异常是 抛出因为不正确的 超载的 - 我怀疑

不,它不应该如果您的方法的代码不会引发任何运行时异常。

相关方法 覆盖任何错误( - 柜面当孩子 类方法具有相同的名称,基地 类相同的参数作为基础 类----的)将在编译时 抛出。

这就是所谓的覆盖。如果它不存在那么它可能会抛出编译时错误,如果你使用@Override

+0

确定如果我的代码抛出一个异常,这与异常无关anywayz不涉及overloadng .. kooll ...我接受..仍然我的覆盖问题是我们有任何运行时异常的概率.. – crackerplace 2011-05-12 07:33:14

+0

我不看到任何直到你的代码生成 – 2011-05-12 07:38:15