Java 抽象类的子类can';我看不见构造器

Java 抽象类的子类can';我看不见构造器,java,abstract-class,Java,Abstract Class,我花了一些时间在这里整理我的头发。看起来是黑白相间的,但我就是不能让它工作。在我的类所说的java抽象类的基础上做了大量的挖掘,但是没有用 我想做的是:作为作业的一部分(所以请不要有什么大的提示,除非是我的IDE或其他东西),我正在制作一个客户类抽象,然后继续制作一些子类。通过这种方式,抽象类将通过创建利用抽象类方法/属性的子类来实例化。到目前为止和我在一起 package customer; abstract class Customer { private String id;

我花了一些时间在这里整理我的头发。看起来是黑白相间的,但我就是不能让它工作。在我的类所说的java抽象类的基础上做了大量的挖掘,但是没有用

我想做的是:作为作业的一部分(所以请不要有什么大的提示,除非是我的IDE或其他东西),我正在制作一个客户类抽象,然后继续制作一些子类。通过这种方式,抽象类将通过创建利用抽象类方法/属性的子类来实例化。到目前为止和我在一起

package customer;

abstract class Customer {
    private String id;
    private String name;

    public Customer(String id, String name) {
        this.id = id;
        this.name = name;
    }

    //accessors
    public double getDiscount(double amt) {
        double discount = 0;
        return discount;
    }
    public String getID() {
        return this.id;
    }
    public String name() {
        return this.name;
    }
}
抽象的客户类,似乎都很好,简单,容易。现在是实体子类RetailCustomer

package customer;

public class RetailCustomer extends Customer {
    private double rateOfDiscount = 0.04;

    public RetailCustomer(String id, String name, double rate) {
        super(id, name);
        this.rateOfDiscount = rate;
    }
    //mutators
    public void setDiscount(double rate) {
        this.rateOfDiscount = rate;
    }
    //accessors
    public double getDiscount() {
        return this.rateOfDiscount;
    }
}
嗯。同样,非常简单。RetailCustomer扩展了Customer抽象类,并应该使用抽象类构造函数,如中所示

public RetailCustomer(String id, String name, double rate) {
        super(id, name);
        this.rateOfDiscount = rate;
}
但是,我的IDE(Eclipse)显示了一个错误“构造函数客户(字符串,字符串)未定义”。尽管它显然在抽象类中

注意:只是从中复制语法

另外,作为一个补充问题(我很可能通过实验来解决):

抽象客户类实现了一些只是简单访问器的方法。我的理解是,除非retialCustomer以某种方式实例化这些方法,否则对象不会实例化,因为所有方法都需要实现


提前感谢您提供的任何提示或建议。正如我所说的,这对我来说似乎很简单,但同时也很简单:(

您的代码看起来不错。重新构建它(您可能还想看看IntelliJ IDEA;))。另外,请遵循惯例,将您的类重命名为
RetailCustomer

抽象客户类实现了一些只是简单访问器的方法。我的理解是,除非retialCustomer以某种方式实例化这些方法,否则对象不会实例化,因为所有方法都需要实现

你可能需要重新措辞,因为你的问题不清楚。所有子类都将继承父类的实现。即使父类是抽象的,如果实现了类中的某些方法,那么所有子类都将继承这些实现。实际上,您仍然无法实例化抽象类,但是您可以从子类中使用这些方法

如果您对
Customer
中的方法感到满意,则无需在
RetailCustomer
中重写它们

我想做的是:作为作业的一部分(所以请不要有大的提示,除非是我的IDE或其他东西)


+1.

如果你重新编译Customer,很有可能是solvedJust一个关于约定的小通知:类名(因此construcor)应该是驼峰大小写,首字母大-所以RetailCustomer.clean并构建项目单击
项目
菜单,单击
清理
,选择项目并清理。事情应该是好的。发布的代码是好的。要么您在添加该构造函数后没有重建项目,要么(不太可能)您导入了另一个没有该构造函数的
Customer
类。