抽象类
- abstract修饰符可以用来修饰方法可以用来修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
- 抽象类中可以没有抽象方法(抽象类中可以有普通的方法,也可以没有抽象方法),但是有抽象方法的类,一定要声明为抽象类。
- 抽象类,不能使用new关键字来创建对象,它是需要子类继承的
- 抽象方法,只有方法的声明,没有方法的实现,同样是需要子类来实现的
- 子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
abstract 抽象类:类 逃脱不了extends:Java单继承 有局限性 (接口可以多继承)
public abstract class Action {
约束
abstract :抽象方法 只有方法的名字,没有方法的实现
public abstract void doSomething();
抽象类的特点
*1.不能new这个抽象类,只能靠子类来继承并实现它:约束
*2.抽象类中可以写普通的方法
*3.抽象方法必须在抽象类中
* 4.抽象的抽象:约束
public void do1(){
}
}
抽象类的所有方法,继承它的子类都需要实现它的方法
除非子类也是一个抽象类
public class A extends Action{
@Override
public void doSomething() {
}
}
思考
1.抽象类既然不能new对象,那么存在构造器吗?
- 存在构造器
- 即使你没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话你的子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super()。
2.抽象类存在的意义
- 因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。
- Java中抽象类对于代码的维护和重用有很好的帮助,也是Java面向对象的一个重要体现。