- 抽象成员必须标记为abstract,并且不能有任何实现 //实现后无法调用虚方法
- 抽象成员必须在抽象类中 //实类中出现抽象成员无法调用
- 抽象类不能被实例化 //同1
- 子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类)
- 抽象成员的访问修饰符不能是private //否则5实现不了
- 在抽象类中可以包含实例成员,并且抽象类的实例成员可以不被子类实现 //当时实例成员依旧可以被子类重写调用
- 抽象类是有构造函数的,虽然不能被实例化
- 如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。如果抽象父类的抽象方法中有返回值,那么子类在重写这个方法的时候,也必须要传入返回值。
如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。
如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。