1.抽象类
为什么会有抽象类:
抽象类的写法:abstract关键字
Animal定义为抽象类后,Animal animal = new Animal();会报错;但,Animal one = new Cat()依旧是可以的。
抽象类或是,保证“逻辑意义”完美的一种辅助保障手段。
当父类定义成抽象类后,借由父类和子类的继承关系,可以限制子类设计随意性,同时又可以避免无意义父类的实例化。
这一点目前理解,可能和接口类似;
2.抽象方法
通过抽象类的理解,可以发现,父类仅仅是划定了一个大纲,具体方法的实现可以没有(在子类中具体实现)。即父类中的有些方法可以没有具体实现,即没有方法体。
这个时候,如果子类不重写eat()方法会报错。(除非将子类也定义成抽象类,并且子类中的eat()方法也定义成抽象方法。)
抽象方法可以认为是一种:子类必须具体实现父类抽象方法的一种提醒机制。
注:(1)包含抽象方法的类,一定得是抽象类;在一个抽象类中,可以没有抽象方法。
(2)根据abstract的设计原则可以发现,static,final,private都不能与abstract共同使用。