接口和抽象类的区别和联系
jdk1.7中,接口和抽象类的区别和联系
- 抽象类中可以有普通成员变量,接口中没有普通成员变量;接口中允许定义成员变量,但必须是常量。
- 抽象类中可以含有私有成员变量,接口中不含有私有成员变量。
- 抽象类和接口都可以包含静态成员常量(public static final)。
- 抽象类可以包含非抽象的普通方法,接口中的方法必须是抽象的。
jdk1.8之后,接口和抽象类的区别和联系
- 接口和抽象类中的方法可以有方法体。接口中的方法可以被default或static修饰,被修饰的方法必须有方法体,就是有{}.抽象类的普通方法是可以有方法体的。
public abstract class test1 {
public int a;
private int b;
public static final int c = 1;
public void select(){}
abstract void sum(int x, int y);
}
public interface test1 {
public static final int a = 1;
public abstract void add();
default void move(){};
static void select(){};
}