1 主要不同是接口的方法隐含是抽象的并且不可以有实现,抽象类可以实现一个实例的默认行为。
2 接口的变量声明默认是final的。抽象类可以有非final变量。
3 接口的成员默认是public的。抽象类可以有常用的类访问权限定义。
4 接口实现时需要使用关键字implements。抽象类扩展时需要使用extends关键字。
5 一个接口可以扩展另一个Java接口,抽象类可以扩展另一个Java类,实现多个Java接口。
6 Java类可以实现多个接口,但只能扩展一个抽象类。
abstract interface AbsInt {
public void interfacing();
public abstract boolean interfacing(boolean really);
}
class AbsIntImp implements AbsInt {
@Override
public void interfacing() {
// TODO Auto-generated method stub
}
@Override
public boolean interfacing(boolean really) {
// TODO Auto-generated method stub
return false;
}
}
interface AbsIntExt extends AbsInt, Runnable {
public int interfacing(int really);
}
abstract class AbsBase {
public void abstractBase() {}
protected abstract int abstracting();
}
class AbsIntExtImp extends AbsBase implements AbsIntExt {
@Override
public void interfacing() {
// TODO Auto-generated method stub
}
@Override
public boolean interfacing(boolean really) {
// TODO Auto-generated method stub
return false;
}
@Override
public int interfacing(int really) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void run() {
// TODO Auto-generated method stub
}
@Override
protected int abstracting() {
// TODO Auto-generated method stub
return 0;
}
}