从实现的类创建对象的正确语法是什么 因为我同时使用java和C++,有时我会混淆语法。我的问题很简单。我需要创建一个由其他类实现的类IBuyer。我正在尝试编写一个函数,它将在我的Main中返回一个IBuyer对象,但它表示它的抽象,无法实例化。我将抽象添加到其他类的定义中,但它仍然不喜欢它。它想要什么

从实现的类创建对象的正确语法是什么 因为我同时使用java和C++,有时我会混淆语法。我的问题很简单。我需要创建一个由其他类实现的类IBuyer。我正在尝试编写一个函数,它将在我的Main中返回一个IBuyer对象,但它表示它的抽象,无法实例化。我将抽象添加到其他类的定义中,但它仍然不喜欢它。它想要什么,java,Java,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 IBuye

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);

谢谢

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


相反,您需要创建继承接口标准的具体类的实例

根据命名约定判断,IBuyer是某种类型的接口,您不能使用new关键字实例化接口。它们没有实施

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

现在你已经在一定程度上做到了,但你已经把它抽象化了

public abstract class Standard implements IBuyer {
关键字abstract意味着类本身不能实例化,相反,它应该派生自

因此,如果您打算实例化标准,那么就应该去掉abstract关键字。和使用

IBuyer newBuyer = new Standard(name, password);
您也可以从标准派生另一个类,例如

public class MyClass extends Standard{
然后使用

IBuyer newBuyer = new MyClass(name, password);

你只能实例化一个具体的类,不能实例化一个抽象的类。你也不能实例化那样的接口。你认为这行代码做什么?我在其他类的定义中添加了抽象,但它仍然不喜欢它。请保护您自己的理智,不要添加您不理解的代码来修复您不理解的错误。你会陷入比以前更糟糕的困境。你还需要了解抽象的含义。投票表决,但标准目前是抽象的,而不是具体的。这仍然需要一个构造函数。谢谢你,山姆,这很有意义。说明含糊不清也无济于事,书中的解释就好像你是java编程新手一样,我不是,但我想我明白了。