Abstract关键字
用abstract关键字来修饰一个类时,这个类就叫抽象类
abstract 类名{}
用abstract关键字来修饰一个方法时,这个方法就是抽象方法
访问修饰符abstract 返回类型 方法名(参数泪飙);//没有方法体,因为抽象方法不能有方法体
- 抽象类的价值更多作用时在于设计,是设计者设计好后,让子类继承并实现抽象类
- 抽象类,是考官比较爱问的知识点,再框架和设计模式使用较多
抽象类使用的注意事项和细节讨论
- 抽象类不能被实例化
- 抽象类不一定要包含abstact方法。也就是说,抽象类可以没有abstract方法
- 一旦类包含了abstract方法,则这个类必须声明为abstract
- abstract只能修饰类和方法,不能修饰属性和其他的
- 抽象类可以有任意成员【抽象类的本质还是类】,比如:非抽象方法,构造器2,静态属性等等
- 抽象方法方法不能有{},即不能实现
- 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为抽象类
- 抽象方法不能使用private,final和static来修饰,因为这些关键字都是和重写违背的
小结:
现实中确实有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写。当然你也可以把抽象类都写成非抽象类,但是这样没有必要。
比如计算一个程序功能完成所需要的时间,在每个程序前后都写的话,就很浪费时间,代码限的臃肿。我们可以写一个抽象类,在抽象类中,写好一个计时器。因为每个程序功能工作内容不同,所有写一个抽象的工作类。使得继承的子类重写这个工作类,这样就可以方便的计算出完成时间,只需要在抽象父类中写一次就可以一直用。
