Java 接口和抽象类的区别

Java 接口和抽象类的区别,java,Java,既然我们已经给出了抽象类,为什么还要使用接口呢 interface A { void show(); } class TestA implements A { public void show(){} } abstract class B { abstract void show(); } class TestB extends B { public void show(){} } 因为,抽象类可以有非抽象方法,所以您可以在非抽象方法中重用代码 接口和

既然我们已经给出了抽象类,为什么还要使用接口呢

interface A  { 
    void show(); 
} 

class TestA implements A {
    public void show(){}
}

abstract class B {
   abstract void show();
}

class TestB extends B {
   public void show(){}
}

因为,抽象类可以有非抽象方法,所以您可以在非抽象方法中重用代码

接口和抽象类的不同之处在于接口描述行为,而抽象类定义部分实现。接口的优点是,它们可以由提供必要方法的任何对象实现,而不管该对象从哪个类继承

抽象方法通常用于提供部分实现。一个例子是定义列表集合行为的列表接口,与AbstractList相比,AbstractList提供了大多数列表实现所需的一些方法,使实现列表更容易。列表不需要从AbstractList继承,但许多实现都需要,但是使用列表的代码永远不必关心它们使用的实现是否扩展了AbstractList


有些人用抽象类代替接口,但这通常被认为是一种反模式。

你不能继承两个抽象类,你不能在接口中放入代码。你的回答消除了我的疑问。