抽象方法:
1.用 abstract修饰的方法 为抽象方法.
2.用 abstract修饰的方法 必须存在于抽象类中!
3.抽象方法不能有方法体(代码块的内容)!
4.抽象方法是需要让子类进行重写实现的!
抽象类:
1.用abstract修饰的类 为抽象类.
2.抽象类可以包含抽象方法,和普通方法.
3.设计为抽象类 那么一定要有子类继承的!
4.子类必须实现重写抽象父类中的所有抽象方法!
5.抽象类是不能被创建对象!
6.抽象类的意义
封装共有属性和行为 -----代码复用
为子类提供向上造型 -----调父执行子
可以包含抽象方法,由具体的子类实现抽象方法书写自己的代码逻辑
子类行为具体逻辑不同,但是入口是一致的!
// SeaObject s = new SeaObject();抽象类不能被创建对象
SeaObject s= new Battleship();//可以向上造型!
SeaObject[] s2 = new SeaObject[3];//创建数组可以!
疑问:
1)抽象方法还有意义吗,为什么不直接用普通方法? 答:遵循面向对象的设计原则,其次可以约束子类必须实现父类的抽象方法!
因为如果设计为普通方法,子类可重写也可以不重写,但是一般如果父类的功能子类不受用,是需要强制约束子类重写的!
2)子类既然都重写了,那么父类的抽象方法不能删的原因? 答:存在的意义就是为了实现向上造型后,父类可以提供一个统一的入口.可以统一管理子类的行为,具体执行时 执行各个子类不同的实现逻辑.