1

在我的应用程序中,我有两种类型的活动,酒店和餐厅,我已将它们实现为抽象类。我需要调用 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;
    }

}

我的抽象类和接口下面的超类

4

2 回答 2

2

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

public abstract class AbstractActivity implements ...

为了让事情更清楚:

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

于 2013-05-27T18:36:32.137 回答
1

您的课程AbstractActivity未声明为abstract.

因此,您被迫interface直接在此类中实现来自顶层的所有方法。

您只需声明为:

public abstract AbstractActivity implements ...
于 2013-05-27T18:37:09.300 回答