使用接口隐藏实现细节

时间:2013-09-30 19:53:54

标签: java interface

我有一个包含1个界面和2个类的项目: -

public interface Account {
    int add();
}

public class AccountImpl implements Account{
    @Override
    public int add() {
         return 0;
    }
}

和1个主要方法

public class Testing {
    Account account;

    public static void main(String[] args) {
        Testing t = new Testing();
        t.call();
    }

    public void call() {
        int a = account.add();
    }
}

我在行int a = account.add();中获得Null指针异常,因为帐户值为空。

我是java的新手,请你帮忙删除它?

3 个答案:

答案 0 :(得分:0)

call函数中调用main时,私有变量account未初始化。这意味着你从来没有给它一个价值;它没有指向一个对象(它是一个“空指针”指向什么)。因此,您无法调用该对象的方法。

要解决此问题,您需要先初始化变量。例如,在Testing类的构造函数中:

public Testing () {
    account = new AccountImpl();
}

答案 1 :(得分:0)

您尚未实例化AccountImpl要调用的实例;你得到的例外情况通常被称为“你还没有做出其中一个”。

public class Testing {
     Account account;
     public static void main(String[] args) {
        Testing t = new Testing();
        t.call();
     }

     public void call() {
         account = new AccountImpl();
         int a = account.add();
     }
}

答案 2 :(得分:0)

您尚未初始化帐户。你最好这样做。

Account account = new AccountImpl();

在Test类的第一行。