抽象类的子类使用 extends 来继承,接口则是使用 implements 来实现接口。例如:
(1)抽象类
public abstract class MyAbstract {}
// 继承抽象类
public class Demo extends MyAbstract {}(2)接口
public interface MyInterface {}
// 实现接口
public class Demo implements MyInterface { }抽象类可以有构造函数,接口不能有。例如:
public abstract class MyAbstract {
public MyAbstract(String msg) {
//...
}
}
public interface MyInterface {
// 错误
public MyInterface() {
//
}
}在 IDEA 中,提示的错误信息如下图:

抽象类可以有 main() 方法,并且我们能运行它,因为抽象类不能被实例化;接口不能有 main() 方法。如下:
public abstract class MyAbstract {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
public interface MyInterface {
// 错误
public static void main(String[] args) {
System.out.println("Hello World");
}
}类可以实现很多个接口;但是只能继承一个抽象类。例如:
import java.io.Serializable;
public class Demo implements MyInterface, Serializable,Comparable<String> {
@Override
public int compareTo(String o) {
return 0;
}
}上面类实现了 3 个接口。
import java.util.ArrayList;
public class Demo extends MyAbstract, ArrayList<String> {
}在 IDEA 中,提示的错误信息如下图:

接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。
public interface MyInterface {
void show();
}等价
public interface MyInterface {
public void show();
}下面抽象类中的方法定义均合法:
public abstract class MyAbstract {
public void show1() {}
protected void show2() {}
private void show3() {}
void show4() {}
}