搜索

首页  >  问答  >  正文

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,求大神指点
大家讲道理大家讲道理2906 天前417

全部回复(4)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:22:52

    你只是声明一个名为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();
        }
    }

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 09:22:52

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

    回复
    0
  • ringa_lee

    ringa_lee2017-04-18 09:22:52

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 09:22:52

    因为你没有new

    回复
    0
  • 取消回复