2015-12-11 32 views
-1

我写了这段代码,我需要在Class3中创建一个监听器来调用接口“MethodsListener”的所有覆盖方法,我该如何做到这一点?用接口实现所有类的动作

Class3我打电话,我需要在实现该接口的所有类运行此功能,在下面的例子中,当我调用函数Method2Class3我需要Class1运行Method2接口MethodsListener的任何功能。

我写了这段代码,我需要在Class3中创建一个监听器来调用接口MethodsListener的所有覆盖方法,我该如何解决这个问题?

Class3我打电话到接口MethodsListener我需要运行在实现此接口的所有类此功能,在下面的例子中,当我调用函数Method2Class3我需要运行Method2中的任何功能Class1

所有类都在分开的线程中运行。

这是示例代码:

public class Class1 implements MethodsListener { 
    public static void main(String[] argv) { 
     new Thread(new Class2()).start(); 
    } 

    @Override 
    public void method1(String message) { 
     System.out.println("Method 1 executed, message: " + message); 
    } 
    @Override 
    public void method2(String message) { 
     System.out.println("Method 2 executed, message: " + message); 
    } 
} 

public class Class2 implements Runnable { 
    @Override 
    public void run() { 
     new Thread(new Class3()).start(); 
    } 
    /*...*/ 
} 

public class Class3 implements Runnable, MethodsListener { 

    @Override 
    public void run() { 
     method1("MSG 1"); 
     method2("MSG 2"); 
    } 

    @Override 
    public void method1(String message) { 
     System.out.println("Executing Method 1"); 
    } 
    @Override 
    public void method2(String message) { 
     System.out.println("Executing Method 2"); 
    } 
} 

interface MethodsListener { 
    public abstract void method1(String message); 
    public abstract void method2(String message); 
} 

在这个例子中的输出,我需要得到:

Executing Method 1 
Method 1 executed, message: MSG 1 
Executing Method 2 
Method 2 executed, message: MSG 2 

回答

1

也许你可能想这个代码。为了简单起见,我测试了一个java文件中的所有代码。只需在eclipse或任何IDE中创建Class1.java并通过以下代码即可。所有三个类和接口应该放在同一个Class1.java文件中。尽管您可以为每个文件创建单独的文件。

class Class1 { 
    public static void main(String[] argv) { 
     new Thread(new Class3()).start(); 
    } 
} 

class Class2 implements MethodsListener { 

@Override 
public void method1(String message) { 
     System.out.println("Method 1 executed, message: " + message); 
    } 
    @Override 
    public void method2(String message) { 
     System.out.println("Method 2 executed, message: " + message); 
    } 
} 

class Class3 extends Class2 implements Runnable { 

    @Override 
    public void run() { 
     method1("MSG 1"); 
     method2("MSG 2"); 
    } 

    @Override 
    public void method1(String message) { 
     System.out.println("Executing Method 1"); 
     super.method1(message); 
    } 
    @Override 
    public void method2(String message) { 
     System.out.println("Executing Method 2"); 
     super.method2(message); 
    } 
} 

interface MethodsListener { 
    public abstract void method1(String message); 
    public abstract void method2(String message); 
} 
相关问题