java中interface中定义方法,标准的调用方式

package com;

public interface ITest {

    public void test();
}

===========================================

package com;

public class Test1 implements ITest {

    @Override
    public void test() {
        // TODO Auto-generated method stub
        
        System.out.println("调用成功");
    }

}

======================================

package com;

public class Test2 {

    private static ITest iTest;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        iTest.test();
    }
    
    
    public ITest getiTest() {
        return iTest;
    }
    public void setiTest(ITest iTest) {
        this.iTest = iTest;
    }
    

}


为什么返回值为null???第一次用sf,求大神指点
阅读 9.6k
4 个回答

你只是声明一个名为iTest的变量, 并未给其实例化, 在JAVA语言中通常是用NEW这个关键字来实例化一个对象的.

把你上面的代码修改成如下的:

package com;

public class Test2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ITest tmp = new Test1();
        tmp.test();
    }
}

itest是个静态变量,没有初始化,为null,不能调用它的方法。要先初始化。

新手上路,请多包涵

这里改成这样private static ITest iTest= new Test1()

因为你没有new

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题