abstract class 与interface都是用来定义抽象概念。例如,对于三角形、圆形、矩形这一些具体的概念,形状就是抽象的概念。因为抽象的概念在问题领域没有具体的概念,所以不能够实例化。
abstract class表示这个对象是什么。
interface表示这个对象能干什么。
一个类只能继承自一个类,却可以实现多个接口。一个类只能属于一种类别,即继承一个类。但一个类可以拥有不同的行为动作,即实现多个interface。
在使用上,可以把interface理解成特殊的abstract class,一个只能包含抽象方法、已初始化的静态成员变量的abstract class。
package me; public interface InterTest { public static final int a = 0; int b = 0; public abstract void inter(); void inf (); }
在interface中,成员变量默认有public static final修饰、方法默认有public abstract修饰。因为成员变量有final修饰,成员变量必须已初始化。
package me; public abstract class AbstTest { int a;
public int b;
private int c;
protected int d; AbstTest() { } public int getC() {
return c;
} public void setC(int c) {
this.c = c;
} static void abs() { } protected abstract String inf(); }
在抽象类中,可以有构造方法、成员变量、非抽象的普通方法、非抽象静态方法以及protected修饰的抽象方法。