2017-07-22 5 views
-3

他のクラスのメソッドで2つの異なるメソッドを呼び出すことはできませんが、次のメソッドは実行できませんでした。他のクラスで2つの異なるクラスのメソッドを実行することができません

SOここ
public class Class1 extends Classn { 
    @Test 
    public void Method1() { 
     // method detailing... 
    } 
} 

public class Class2 extends Classn { 
    @Test 
    public void Method2() { 
     // method detailing... 
    } 
} 

public class Class3 extends Class1 { 
    @Test 
    public void Method3() { 
     Class1 cs1 = new Class1(); 
     Class1.Method1(); 
     Class2 cs2 = new Class2(); 
     cs2.Method2(); 
    } 
} 

方法2Class3の方法1を実行取得されていません。誰かが私がここで逃したことを教えてください。

+0

コードを入力してください。 – Zabuza

+0

あなたは「**実行されていません**」と言います、それはどういう意味ですか?あなたのコードはまっすぐ実行されますが、メソッドは単に呼び出されませんか?または、コンパイルやクラッシュしないでください。エラーメッセージも入力してください。それだけでなく、あなたが本当にコンパイルエラーなしで**実行していると思うなら、あなたが投稿したコードの中にバグがないように見えます。 – Zabuza

+0

@Zabuza Method1()が実行された後、Method2()が呼び出されていません – Krunal

答えて

1

アサーションがClass1.Method1()で失敗した場合。次の行は実行されません したがって、下の行は実行されません。ここで

Class1.Method1(); //here should not be any assertion error 
Class2 cs2 = new Class2(); 
cs2.Method2(); 
+0

しかし、Method1()は正常に実行されました。次の行には実行されません – Krunal

1

は、あなたの質問への答えです:Class3クラスにあなたが直接Class1からアクセスMethod1()にしようとしているため、すべてのコードの

最初にコンパイルされません。 Method1()は非静的であるため、表示されますCompilation Errors

ソリューション:2つのソリューションがあります。

  1. 次のようにクラスClass1の対象cs1Class1からMethod1()にアクセスする次のいずれか

    エルス
    @Test 
    public void Method3() 
    { 
        Class1 cs1 = new Class1(); 
        cs1.Method1(); 
        Class2 cs2 = new Class2(); 
        cs2.Method2(); 
    } 
    
  2. あなたは次のように直接Method1()にアクセスするためにstaticとしてClass1Method1()を宣言する必要があります。

    @Test 
    public static void Method1() 
    { 
        System.out.println("Within Child : Class1"); 
    } 
    
    @Test 
    public void Method3() 
    { 
        Class1 cs1 = new Class1(); 
        Class1.Method1(); 
        Class2 cs2 = new Class2(); 
        cs2.Method2(); 
    } 
    

が、これは、あなたの質問に答えるならば、私に教えてください:は、その後、あなたは次のように直接Class1Method1()にアクセスすることができます。

0

ここで私は自分のコードで逃した。私はclass1とclass2の2つのメソッドで@Testを使用していますので、class3の2番目のメソッドは呼び出されませんでした。ここで私はこれを行い、今はうまくいきます。

public class Class1 extends Classn { 
    @Test <@Test removed from here> 
    public void Method1() { 
     // method detailing... 
    } 
} 

public class Class2 extends Classn { 
    @Test <@Test removed from here> 
    public void Method2() { 
     // method detailing... 
    } 
} 

public class Class3 extends Class1 { 
    @Test 
    public void Method3() { 
     Class1 cs1 = new Class1(); 
     Cs1.Method1(); <Here i did typo mistake in my question> 
     Class2 cs2 = new Class2(); 
     cs2.Method2(); 
    } 
} 
関連する問題