作用:
在面向对象的概念中,所有的对象都是通过类来描述的,但并不是说所有的类都是用
来描述对象的。当一个类中没有包含足够的信息以描绘一个具体的对象时,这样的类就是抽象类。
定义抽象类的意义在于:
为其子类提供一个公共的类型(父类引用指向子类对象)
封装子类中的重复内容(成员变量和方法)
将父类设计成抽象类后,既可借由父子继承关系限制子类的设计随意性,在一定程度上避免了无意义父类的实例化。
语法:
特点:
抽象类不允许直接实例化,换句话说抽象类不能创建对象,它只能作为其他类的父类。 但可以通过向上转型,指向子类实例。(如图1,2)
(图1)(图2 )
当类中存在抽象方法,则必须声明为抽象类(如图3,4);但是抽象类中可以没有抽象方法(如上面图1)。
(图3)(图4)
3、一个类继承抽象类后,必须实现其所有抽象方法,否则也是抽象类(如上图3,下图5,6);不同的子类对父类的抽象方法可以有不同的实现。
(图5)
(图6)
4、abstract 方法不能用 static 和 private 修饰;对于类,不能同时用 final 和 abstract 修饰。因为 final 关键字使得类不可继承,而 abstract 修饰的类如果不可以继承将没有任何意义。两者放在一起,也会引发编译异常。(如图7,8,9)
(图7)(图8)(图9)