若接口和抽象类都有相同的方法,那个么在java中将所有方法重写到我的类中哪个更好?

若接口和抽象类都有相同的方法,那个么在java中将所有方法重写到我的类中哪个更好?,java,class,interface,abstract-class,Java,Class,Interface,Abstract Class,嗨,我在SCJP考试中遇到了这个问题。若接口和抽象类都有相同的方法,那个么在java中将所有方法重写到我的类中哪个更好?请解释我在不同的情况下,哪一个是更好的选择 这是一个接口: interface ArithmeticMethods { public abstract void add(); public abstract void sub(); public abstract void div(); public abstract vo

嗨,我在SCJP考试中遇到了这个问题。若接口和抽象类都有相同的方法,那个么在java中将所有方法重写到我的类中哪个更好?请解释我在不同的情况下,哪一个是更好的选择

这是一个接口:

interface ArithmeticMethods {
       public abstract void add();
       public abstract void sub();
       public abstract void div();
       public abstract void mul();
   }
这是一个抽象类:

abstract ArithMethods {
       public abstract void add();
       public abstract void sub();
       public abstract void div();
       public abstract void mul();
   }
这是我的类名:arithMethodImplementation类

现在在什么情况下我应该这样做

public ArithMethodImplemenation implements ArithmeticMethods{
   //override all methods of ArithmeticMethods
}
或者在什么情况下我应该这样做

public ArithMethodImplemenation extends ArithMethods{
   //override all methods of ArithMethods
}

请用不同的场景向我解释。我的朋友们在很多采访中也遇到了这个问题。但是他们没有成功。

我看不出只有抽象方法而没有字段的抽象类有什么意义

抽象类应该通过实现部分公共功能来帮助您避免在实现类时重写公共代码


在这种情况下,接口更合适,因为它只定义了方法签名。

您应该实现,因为继承主要是从超类继承所有方法。实现提供了一个框架,在这个框架中,您不会覆盖所有空的继承方法

根据Ken Arnold和James Gosling编写的Java编程语言第二版:

继承-创建一个新类作为另一个类的扩展,主要用于 代码重用的重要性。也就是说,派生类继承 基类。Java只允许一个类有一个直接基类,即单个类 继承权

接口继承-创建一个新类来实现定义为 用于子类型化的接口。这是一个实现接口的类
“到”或受接口类型的约束。Java支持多接口继承。

只有抽象方法的空抽象类没有意义

只需使用接口即可


请记住,在Java中,您只能扩展一个类,但可以实现多个接口。

抽象类是否如您所述完全为空?你必须在编写类和接口之间做出选择,或者两者兼有,并且应该在实现接口和扩展类之间做出决定?至少我似乎同意anubhava的观点: