java中关于抽象类的一些细节问题
- 抽象类和抽象方法(非构造方法)用abstract 关键字来修饰
- 抽象方法没有方法体,即没有{};
- 抽象类可以没有抽象方法,但是一个类只要有一个抽象方法那么它一定是抽象类
- 抽象类可以有构造方法,但是不能通过它实例化抽象类的对象(调用它抽象方法没意义)
- 抽象类的子类如果不是抽象类,那么它必须重写父类所有的抽象方法;否则不需要重写所有抽象方法
- abstract不能与private,static,final共用。static修饰的方法可以通过类名调用,而调用抽象方法没有意义。private修饰的方法是私有的,不能被继承到,和abstract矛盾。final修饰的类或者方法是最终的,也不能被继承。
- 如果不想重写抽象类的所有方法,可以采用适配器模式,适配器也是一个抽象类,但是具有抽象父类所有抽象方法的空实现,即有{},但是{}里面没有内容。声明为抽象类的原因是没有必要去new适配器的对象,它是用来被继承的。