在我的应用程序中,我有两种类型的活动,酒店和餐厅,我已经实现为抽象类。我需要调用一个在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;
}
}
答案 0 :(得分:2)
班级AbstractActivity
不是abstract
。这就是IDE要求您实现这些方法的原因。如果您将其声明为抽象,那么您将不会遇到此问题。
public abstract class AbstractActivity implements ...
让事情更清楚:
抽象类AbstractActivity
是一个不会被实例化的基类,它用于放置具体类HotelClass
和RestaurantClass
中常见的功能。
抽象类不需要实现它实现的交互所声明的所有方法。但是具体的类必须为它实现的接口的所有方法提供实现。这就是为什么AbstractActivity
不需要实现它实现的接口声明的所有方法的原因。但具体类(实例化的类)需要知道它们将如何实现接口,因此它们需要实现所有方法。一些方法实现可以由它们的超类提供。
答案 1 :(得分:1)
您的班级AbstractActivity
未声明为abstract
。
因此,您必须直接在此类中实现顶级层次结构中的所有interface
方法。
您只需声明为:
public abstract AbstractActivity implements ...