从实现的类创建对象的正确语法是什么

时间:2013-12-09 21:07:55

标签: java

由于我同时使用Java和C ++,我有时会混淆我的语法。我的问题很简单。我需要创建一个由其他类实现的类(IBuyer)。我正在尝试编写一个函数,它将在我的Main中返回IBuyer的对象,但它表示它的摘要并且无法实例化。我在其他类的定义中添加了abstract,但它仍然不喜欢它。它想要什么?

IBuyer课程:

public interface IBuyer {    
    String GetName();
    String GetPassword();
    void SetName(String sName);
    void SetPassword(String sPass);    
} //end interface IBuyer

另一个名为Standard的课程:

public abstract class Standard implements IBuyer {    
    private String userSName;
    private String userSPass;
    private String userSType;

.
.
.
}

My Main.java文件:

public IBuyer GetUser (String name, String password) {

    IBuyer newBuyer = new IBuyer(name, password);

    return newBuyer;
};

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String uName;
    String uPass;

。 。

}

这就是我不需要的语法帮助:

IBuyer newBuyer = new IBuyer(name, password);

谢谢

2 个答案:

答案 0 :(得分:3)

正如错误试图告诉您的那样,您无法创建接口或抽象类的实例。

相反,您需要创建一个继承接口的具体类的实例(Standard

答案 1 :(得分:1)

根据命名约定,IBuyer是某种接口,您无法使用new关键字实例化接口。他们没有实施。

您需要做的是从接口派生,并实例化派生类。

现在你已经在某种程度上做到了,但你已经把它变成了抽象的

public abstract class Standard implements IBuyer {

关键字abstract表示类本身不能实例化,而应该从中派生出来。

因此,如果您打算实例化Standard,那么您应该删除abstract关键字。并使用

IBuyer newBuyer = new Standard(name, password);

您也可以从标准中派生另一个类,例如

public class MyClass extends Standard{

然后使用

IBuyer newBuyer = new MyClass(name, password);