我是否需要在各自的接口中声明抽象类的方法?

时间:2013-05-27 18:32:54

标签: java methods interface abstract-class

在我的应用程序中,我有两种类型的活动,酒店和餐厅,我已经实现为抽象类。我需要调用一个在HotelClass上的方法,但IDE告诉我在abstractActivity中创建一个方法。如果我这样做,它将创建一个重复的方法。我该如何解决这个问题?

package pt;

public class HotelClass extends AbstractActivity {

    private int starClass;
    private int price; //preço medio por noite

    // Basic Account Constructor
    public HotelClass(String city, String name, String description, String address, int starClass, int price, String owner) {
        super(city, name, description, address, owner); // chamada construtor super-class
        this.starClass = starClass;
        this.price = price;
    }

    public int getStar(){
        return this.starClass;
    }

    public int getPrice(){
        return this.price;
    }

}

My abstract class and super class below interface

2 个答案:

答案 0 :(得分:2)

班级AbstractActivity不是abstract。这就是IDE要求您实现这些方法的原因。如果您将其声明为抽象,那么您将不会遇到此问题。

public abstract class AbstractActivity implements ...

让事情更清楚:

抽象类AbstractActivity是一个不会被实例化的基类,它用于放置具体类HotelClassRestaurantClass中常见的功能。 抽象类不需要实现它实现的交互所声明的所有方法。但是具体的类必须为它实现的接口的所有方法提供实现。这就是为什么AbstractActivity不需要实现它实现的接口声明的所有方法的原因。但具体类(实例化的类)需要知道它们将如何实现接口,因此它们需要实现所有方法。一些方法实现可以由它们的超类提供。

答案 1 :(得分:1)

您的班级AbstractActivity未声明为abstract

因此,您必须直接在此类中实现顶级层次结构中的所有interface方法。

您只需声明为:

public abstract AbstractActivity implements ...