抽象
- 抽象成员必须标记为abstract,并且不能有任何实现
- 抽象成员必须在抽象类中,但是抽象类中不一定全是抽象成员
- 抽象类不能实例化
- 子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类,则可以不重写)
- 抽象成员的访问修饰符不能是private 私有的 因为你定义了抽象方法 就是为了让子类重写 那定义了私有抽象方法 还有意义吗
- 在抽象类中可以包含实例成员(实例成员可以不让子类重写)
- 抽象类是有构造函数的,虽然不能实例化-- 抽象类里面都没有方法体 public abstract void fun();
- 如果父类中的抽象方法有参数,那么,继承这个抽象父类的子类在重写父类的方法的时候,必须传入对应的参数
如果抽象父类的抽象方法有返回值,那么子类在重写这个抽象方法的时候,也必须要传入返回值
关于抽象类和抽象方法还需要注意如下几点:
- 一个类中如果声明了一个抽象方法,那么这个类必须是抽象的。
- 一个非抽象类如果派生了一个抽象类,就必须重写这个抽象类中所有的抽象方法。