在我们抽象实例对象的时候,有这样一种情况,往上层抽象时就会发现很难描述对象的属性和行为,比如“形状” ,其方法计算面积怎么计算?正方形知道怎么计算,长方形也知道怎么计算,但是形状呢,你肯定会问什么形状,不告诉我,我怎么计算呢?好吧,形状确实是有面积的,但是又无法描述其实现方式,这种包含类我们可以抽象出一个抽象类。
抽象类由于其有可能有无法实现的方法(抽象方法),所以不能被实例化。
抽象类的特征:
1)使用abstract关键字修饰的类称为抽象类 2)抽象类不能实例化对象,原因是抽象方法无法被调用 3)有抽象方法的类肯定是抽象类,但是抽象类中不是必须有抽象方法
如果许多类都有相同的方法,单实现方式不一样,这样我们可以抽象出父类,在父类中声明方法但是并不进行实现,交由其子类实现。
抽象类用来规范一些子类的行为的,它可以做父类。
如:动物类,我们知道动物有移动的行为,有吃的行为但是你能知道动物是怎么移动,怎么呼吸,吃什么吗?不是具体的动物相信你肯定无法回答,这样我们就需要创建抽象的动物类
public abstract class Animal { }
抽象动物类 1.抽象类不能直接实例化,必须通过子类
abstract void eat();
抽象吃的方法(行为) 2.抽象方法只需声明,不需要实现
附图,这个比喻无敌~~~