2012-05-07 19 views
0

私はオーバーライドに疑問があります。この場合にはどうなりオーバーライドロジック:初心者

class base{ 
public void amethod(){} 
} 
class child extends base{ 
public void amethod(int i){}} 

は?方法は2つの異なるものをと考えていますか?または、それはまだ上書きしますか?PLSの明確化。

+2

これは、JVMで自分で確認するのは簡単なことです。なぜここで尋ねる代わりにそれをしないのですか?それはより速く、より決定的になるでしょう。 – duffymo

+0

子クラスで '@ Override'を使用します。コンパイラはエラーを返します。 (クラスの命名規則は最初の文字を大文字にしています) –

+0

@duffymo - 速い?はい!決定的?実験が決定的な答えを与えることは議論の余地があります。適切な実験を行い、結果を正しく解釈するのに十分な理解力が必要です。あなたが決定的にしたい場合は、良い本、オラクルのチュートリアル、または(最終的には「確定性」のために)JLSを読んでください。 –

答えて

6

これは上書きではなく、overloadingであり、これらの2つは互いに関連していません。

Java tutorialを見てみましょう:

オーバーロードの方法は数およびメソッドに渡される引数 の種類によって区別されています。コードサンプルでは、​​draw(String s)とdraw(int i)は異なる引数型を必要とするため、別個の一意のメソッドです。

0

あなたのプログラムでは、それはをオーバーライドではありませんBTはい、それはをオーバーロード..です メソッドをオーバーライドするために、派生クラスがベースと同じメソッド名、同じ引数リストと同じ戻り値の型を持つメソッドを持っている必要がありますクラス.. あなたのケースでは、両方のメソッドが異なる引数リストを持っています。より多くのオーバーライドの理解をご覧ください :http://javabyroopam.blogspot.in/

0

のオーバーライドは、2つの方法が同じ名前と同じ戻り値の型を持っていますが、異なる引数とオーバーライドは、同じ名前を持つ2つの方法で、同じ引数を意味し、同じ戻り値の型が、ボディはで異なっていなければならないです両方の方法

public void amethod() 
    public void amethod(int i) 

私はuが、これはあるの過負荷を ...

をオーバーライドしていないという点だと思います