抽象类的使用
抽象类
public abstract class AbstractMethod {
//子类都要要重写的方法,
public abstract String write();
//子类不需要重写这个方法,但都可以调用,
//这里可以是所有子类的公共相同方法
private String a = "我直接牛逼";
public String allWrite() {
return a;
}
}
子类1
public class AbsOne extends AbstractMethod {
@Override
public String write() {
return this.getClass().getSimpleName() + "--->";
}
}
子类2
public class AbsTwo extends AbstractMethod {
@Override
public String write() {
return this.getClass().getSimpleName() + "--->";
}
}
测试类
public class Test {
public static void main(String[] args) {
//直接创建子类AbsOne
//可调用子类实现的write方法和公共的allWrite方法
AbstractMethod abstractMethod = new AbsOne();
System.out.println(abstractMethod.allWrite());
System.out.println(abstractMethod.write());
}
}
对比接口
- 抽象类可以存在普通的成员函数,但是接口只能存在public abstract方法。
- 抽象类中成员变量可以是任何类型,而接口只能是public static final的。
- 抽象类只能继承一个,而接口可以实现多个。
什么时候使用抽象类?
当不同的类具有相同的某些相同的操作时,并且其中一部分行为实现方式一致,就可以让这些类都派生于一个抽象类。这样就可以直接在抽象类中把相同的部分行为作为一个方法写好,子类直接用即可。