接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的
抽象方法:
抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体
public abstract void f1();
在接口中修饰符和abstract都可以不写,因为会被编译器隐式的指定
抽象类:包含抽象方法的类
1、抽象类可以有抽象方法和非抽象方法,甚至可以没有抽象方法,但是这样没有意义
public abstract class MyAbstractClass {
abstract void add();
void del(){
};
}
2、可以有构造器,但不能实例化去创建对象,你只能这样写
public static void main(String[] args) {
MyAbstractClass myAbstractClass = new MyAbstractClass() {
@Override
void add() {
System.out.println("add()");
}
};
myAbstractClass.add();
}
PS:这样本身不是实例化,而是重写方法,否则会报错。这只是创建了一个匿名内部类。
3、抽象方法的修饰符不能是private,因为需要被实现的。默认情况下是default,个人认为不是public