10

メソッドをオーバーロードする方法と、メソッドをオーバーライドする方法を知っています。しかし、同時にメソッドをオーバーロードしてオーバーライドすることは可能ですか? はいの場合、例を挙げてください。

4

4 に答える 4

18

オーバーロードとオーバーライドは補完的なものであり、オーバーロードは同じメソッド名でパラメーターが異なることを意味し、オーバーライドは同じパラメーターを持つサブクラス内の同じメソッド名を意味します。したがって、オーバーロードは異なるパラメーターを意味するため、オーバーロードとオーバーライドを同時に行うことはできません。

例:

class A {
    public void doSth() { /// }
}

class B extends A {
    public void doSth() { /* method overriden */ }

    public void doSth(String b) { /* method overloaded */ }

}

乾杯!

于 2012-05-13T01:58:14.197 に答える
6

オーバーロードとオーバーロードは単なる抽象化です。オーバーロードとは、コンパイラが名前をパラメーターの型と数と組み合わせて使用​​して、呼び出す関数を指定することを意味します。実際には、メソッドをオーバーロードすることは、コンパイラが関数を検索するために使用するキーが名前とパラメーター リストの組み合わせであるため、別の名前を付けることと同じです。

superオーバーライドは、コンパイラがキーワードでオーバーライドされた関数に対処できることを除いて、同じ原則のようなものです。

オーバーロードされた関数をオーバーライドできますか? はい、オーバーロードされたメソッドは、コンパイラの目には完全に異なるメソッドであるためです。

于 2012-05-13T02:09:00.667 に答える
1

それはあなたが何を意味するかによります。メソッドは、スーパークラスのオーバーロードされたメソッドのオーバーライドにすることができます。また、別のメソッドを使用して同時にオーバーライドしているメソッドをオーバーロードできます。

ただし、新しいオーバーロードとオーバーライドの両方である1つのメソッドを持つことはできません。メソッドをオーバーライドするには、同じシグニチャを持つ別のメソッドがスーパークラスにすでに存在している必要があります...つまり、このメソッドを新しいオーバーライドにすることはできません。

于 2012-05-13T02:45:17.343 に答える