定义:
用来描述抽象事物
例如动物类 里面的吃 每个动物有不同的吃法,因此描述不清只能设置为抽象类 。因此我们只需要继承动物类自己去负责完成自己该怎么吃吃什么就行 所以是必须被继承的因为没有动物不吃
特点:
- 抽象方法跟普通方法是有区别的,它没有自己的主体
2.抽象方法不能用private修饰 因为抽象方法必须被子类实现(重写)而private外界无法访问因此 会产生矛盾 - 抽象方法无法用static修饰 因为static修饰的方法会直接被对象调用 但是本身抽象类是没有方法体的因此即使调用也无任何意义;
- 抽象类无法被实例化
- 有自己的构造方法
- 抽象类无法被final关键字修饰 因为final关键字无法被继承 但是abstract类一定要有继承的类====矛盾
抽象成员方法的特点 第7条 - 如果一个类中至少有一个抽象方法 那么这个类一定是抽象类 反之 如果这个类如果是抽象类但是可以没有抽象方法 这样做的目的是为了这个类(含有一个抽象方法的类)无法被实例化。
- 如果一个类继承了一个抽象类那么,他必须重写这个抽象类的全部抽象方法(可以不复写 但是条件是 这个子类也必须是抽象方法 但是这样做无意义因为此时子类也无法实例化 )(要么是一个抽象类 要么重写所有抽象方法)
a) 为什么抽象方法无法实例化但是却有构造器
既然它也属于继承的范畴,那么当子类创建对象时必然要优先初始化父类的属性变量和实例方法,不然子类怎么继承和调用呢?而它本身不能实例化,因为它本身就是不确定的一个对象,如果它能被实例化,那么我们通过它的对象来调用它本身的抽象方法是不是有问题。所以不能实例化有在情理之中。因此大家只要记住这个规定就行。
抽象类成员变量的特点
可以有成员变量,也可以有成员常量;