メソッドをオーバーロードする方法と、メソッドをオーバーライドする方法を知っています。しかし、同時にメソッドをオーバーロードしてオーバーライドすることは可能ですか? はいの場合、例を挙げてください。
4 に答える
オーバーロードとオーバーライドは補完的なものであり、オーバーロードは同じメソッド名でパラメーターが異なることを意味し、オーバーライドは同じパラメーターを持つサブクラス内の同じメソッド名を意味します。したがって、オーバーロードは異なるパラメーターを意味するため、オーバーロードとオーバーライドを同時に行うことはできません。
例:
class A {
public void doSth() { /// }
}
class B extends A {
public void doSth() { /* method overriden */ }
public void doSth(String b) { /* method overloaded */ }
}
乾杯!
オーバーロードとオーバーロードは単なる抽象化です。オーバーロードとは、コンパイラが名前をパラメーターの型と数と組み合わせて使用して、呼び出す関数を指定することを意味します。実際には、メソッドをオーバーロードすることは、コンパイラが関数を検索するために使用するキーが名前とパラメーター リストの組み合わせであるため、別の名前を付けることと同じです。
super
オーバーライドは、コンパイラがキーワードでオーバーライドされた関数に対処できることを除いて、同じ原則のようなものです。
オーバーロードされた関数をオーバーライドできますか? はい、オーバーロードされたメソッドは、コンパイラの目には完全に異なるメソッドであるためです。
それはあなたが何を意味するかによります。メソッドは、スーパークラスのオーバーロードされたメソッドのオーバーライドにすることができます。また、別のメソッドを使用して同時にオーバーライドしているメソッドをオーバーロードできます。
ただし、新しいオーバーロードとオーバーライドの両方である1つのメソッドを持つことはできません。メソッドをオーバーライドするには、同じシグニチャを持つ別のメソッドがスーパークラスにすでに存在している必要があります...つまり、このメソッドを新しいオーバーライドにすることはできません。