2016-04-23 5 views

答えて

1

サブクラス内のオーバーロードに制限はありません。たとえば、私は次のようなことがあります:

このような質問については、いつでも自分で試してみることができます。

1

単語で - はい。サブクラスでメソッドをオーバーロードすることができます。例えば:あなたがメソッドをオーバーロードすると、それは基本的には同じ名前の他とは直接関連して、まったく新しい方法を作成しています

public class Parent { 
    public void print(String s) { 
     System.out.println("That was a string: " + s); 
    } 
} 

public class Child { 
    public void print(int i) { 
     System.out.println("That was an int: " + i); 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
     Child c = new Child(); 
     c.print("hello"); // prints "That was a string: hello" 
     c.print(7); // prints "That was an int: 7" 
    } 
} 
0

は、それが重要な署名があります。 したがって、異なる署名を持つサブクラスでメソッドを作成した場合、それはコンパイラによってそのクラスに対して異なるメソッドと新しいメソッドとして扱われるため、スーパークラスのメソッドには関係しません。

0

サブクラスでオーバーロードが可能です。異なるパラメータを持つスーパークラスと同じ名前のメソッドを作成すると、別のメソッドとして扱われます。サブクラスにはスーパークラスのメソッドもあります。呼び出すメソッドは、パラメータタイプに基づいてコンパイル時に決定されます。呼び出されるメソッドはコンパイル時に宣言されます。これが静的多型と呼ばれています。ここに例があります -

Class A{ 
    void m1(int x){ 
     System.out.println("m1 in A"); 
    } 
} 
Class B extends A 
{ 
    void m1(String str) 
    { 
     System.out.println("m1 in B"); 
    } 
} 
Public Class Test 
{ 
    public static void main(String[] aa) 
    { 
     B b = new B(); 
     b.m1(10); 
     b.m1("Hello World!!") 
    } 
} 

希望があればこれが役に立ちます。

関連する問題