public interface Intest{
void sayHello();
}
=========================public class InterfaceTest{
public static void main(String[] args){
Test1 test1=new Test1();
Test2 test2=new Test2();
test2.sayHelloDemo();
}
}class Test1 implements Intest{
public void sayHello(){
System.out.println("Hello!!");
}
}class Test2 implements Intest{
public void sayHello(){};
public void sayHelloDemo(){
//????
}
}
请问如何编写sayHelloDemo()调用test1里的方法?或者其它什么的

解决方案 »

  1.   

    采用动态调用的方法与之接口的类
    输入时输入类名,自动调用
    Intest d = (Intest) Class.forName(args[0]).newInstance();//args[0]是你输入时候的输入的类名
      

  2.   

    针对你的实例有几点需要一提
    1。接口根本没有用。根本没有理解接口在何种情况使用和如何使用
    2。方法定义完全可以用static3。如果你要想在Test2中用Test1的那个什么什么方法。为什么不让Test2继承Test1。这样直接就可以等于super.sayHello()。然后重写Test2的sayHello方法。
      

  3.   

    搂主写的这几个class 和 interface没有任何的意义,你这样并不能体现interface的优越之处
      

  4.   

    interface Intest{
    void sayHello();
    }
    //=========================public class InterfaceTest{
    public static void main(String[] args){
    Test1 test1=new Test1();
    Test2 test2=new Test2();
    test2.sayHelloDemo();
    }
    }class Test1 implements Intest{
    public void sayHello(){
    System.out.println("Hello!!");
    }
    }class Test2 implements Intest{
    public void sayHello(){};
    public void sayHelloDemo(){
    Test1 ts1 = new Test1();
    ts1.sayHello();
    }
    }
    也可以。
      

  5.   

    class Test2 implements Intest{
    public void sayHello(){};
    public void sayHelloDemo(){
    /*Test1 ts1 = new Test1();
     *ts1.sayHello();
    */

    //Intest d = (Intest) Class.forName(args[0])
    // .newInstance();//args[0]是你输入时候的输入的类名 Intest d = (Intest) Class.forName(Test1)
    .newInstance();//args[0]是你输入时候的输入的类名}
    会出现:InterfaceTest.java:30: cannot resolve symbol
    symbol  : variable Test1
    location: class Test2
            Intest d = (Intest) Class.forName(Test1)
                                              ^
    1 error怎么 解决问题??
      

  6.   

    回楼上:
    应该是:Intest d = (Intest) Class.forName("Test1");