一、什么是抽象方法:
方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
二、抽象类的注意事项:当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。
1、抽象的方法必须存在抽象类中,抽象类和抽象方法必须都用abstract修饰。
2、抽象方法是没有主体的方法
3、抽象类不能被实例化,就是不能被new的(原因:如果new了,对象.调用抽象方法,抽象方法没有主体根本就不能运行)
4、抽象类的使用:定义类继承抽象类,将抽象方法重写,定义子类的对象
三、抽象类/方法定义
抽象方法定义的格式:
public abstract 返回值类型方法名(参数);
抽象类定义的格式:
abstract class 类名 {
}
四、抽象类的特点:
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。
4、抽象类中可以有抽象方法,也可以没有抽象方法。
5、抽象类的子类
a,实现了抽象方法的具体类
b,抽象类
五、抽象类的细节问题
1、抽象类一定是个父类?
是的,因为不断抽取而来的。
2、抽象类中是否可以不定义抽象方法。
是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用
3、抽象关键字abstract不可以和哪些关键字共存?
(1)private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。
(2)final,暂时不关注,后面学
(3)static,暂时不关注,后面学
4、注意如果子类继承了抽象类,重写了一部分的抽象方法,这个子类还是一个抽象类
六、抽象类的弊端
类与类之间的耦合度过高(紧密链接性)