抽象类
抽象方法的声明没有方法体。
abstract void func();
包含抽象方法的类叫做抽象类。
public abstract class Basic{
abstract void func();
protected abstract void func1();
public abstract void func2();
}
抽象方法默认是public的,不可以设置为private
接口
在java8之前的接口只允许有抽象方法,是一个完全抽象的类,没有提供任何实现
接口中的属性被隐式指明为static和final
public interface Inter{
int m();
}
java8之后允许接口包含默认方法和静态方法
默认方法允许在不破坏已使用接口的代码的情况下,在接口中新增方法
public interface Inter{
int m();
default void newMethod(){
System.out.println("新增方法");
}
}
静态方法可以将工具功能放在接口,从而操作接口
public interface Operations{
void execute();
static void runOps(Operations... ops){
for(Operations op : ops){
op.execute();
}
}
}
抽象类和接口比较
- 可以实现多个接口;但只能继承一个抽象类
- 接口只能包含静态属性,不支持对象状态,成员变量默认是public static final的;抽象类可以包含属性,非抽象方法可能引用这些属性
- 接口不需要在子类实现默认方法,默认方法可以引用其他接口的方法;抽象类必须在子类中实现抽象方法
- 接口没有构造器;抽象类可以有构造器
- 接口隐式为public;抽象类可以为protected
由于本身的博客百度没有收录,博客地址http://zhhll.icu