为什么需要使用抽象类?
比如说:形状肯定有计算周长和面积的方法,但是具体如何计算的,却无法描述,三角形有三角形计算的方法,圆有圆计算的方法。所以在形状这个类里只能声明这个方法,但是不能实现。
抽象类语法:
abstract class 类名{
属性
方法
}
抽象方法语法:
public abstract [返回值] [void] 方法名 (参数列表);没有方法体。
如果一个类中存在这样的方法,那么这个类一定是抽象类,这个类上也要有abstract标识
注意:抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
抽象方法概念:只有声明,没有实现。abstract修饰抽象方法
抽象类:就是含有抽象方法的类(abstract class)。
抽象类不能被实例化,必须被子类继承才能使用子类实例化,作用是:对后代进行规则,即凡是它的后代,必须实现它未实现的方法
抽象类也可以继承抽象类,这样不需要实现父抽象类的方法
抽象类的抽象方法不能和private,final,static共存。
在上一章中动物多态性的案例中,我们提到了动物有“叫”的方法
public class Animal {
public void shout(){
System.out.println("吼吼……");
}
}
实际上,我们能确定的是动物是有“叫”的方法,但是具体怎么叫是无法描述的!
那么在Java中如何来描述和解决这样的问题呢——抽象方法
抽象类不能实例化对象,下面的代码是错误的
Animal a1 = new Animal();
既然不能实例化对象,那么抽象类还有什么用呢?
抽象类是去完成上层规划,对它的后代进行规划和约束,不去考虑具体实现细节,后代必须去按照他的要求去实现,但具体怎么实现后由后代去决定。