一、什么是抽象类?为什么要使用抽象类?
首先要明确,抽象类也是类,只是抽象类具备了一些特殊的性质。
我们以前编写一个类时,会为这个类编写具体的属性和方法,但有一些情况我们只知道一个类需要哪些属性方法,但不知道这些方法具体是什么,这时我们就要用到抽象类。
举个例子,有一位老师布置了一篇作文,要求以春天为题目写一篇字数不少于800字的写景作文。在这个例子中,这篇作文就是一个抽象类,这个抽象类有两个抽象属性:以春天为题目和字数不少于800,还有一个抽象方法:写景。现在全班学生就会按照老师所给的要求,即抽象类,去完成作业。抽象类就像一个大纲一样规范了一个项目。
抽象类作为系统中多个子类的共同父类,它所体现的是一种模板式设计。
二、抽象的定义格式
- 抽象方法的定义格式:public abstract 返回值类型 方法名(参数);
- 抽象类的定义格式:abstract class 类名{}
示例:
1 //抽象类 2 abstract class Animal { 3 abstract public void shout(); //是一个抽象方法,他根本没有方法体,即方法定义后面没有一对花括号 4 } 5 class Dog extends Animal { 6 //子类必须实现父类的抽象方法,否则编译错误 7 public void shout() { 8 System.out.println("汪汪汪!"); 9 } 10 public void seeDoor(){ 11 System.out.println("看门中...."); 12 } 13 } 14 //测试抽象类 15 public class TestAbstractClass { 16 public static void main(String[] args) { 17 Dog a = new Dog(); 18 a.shout(); 19 a.seeDoor(); 20 } 21 }
结果:
三、抽象类的使用要点:
1. 有抽象方法的类只能定义成抽象类
2. 抽象类不能实例化,即不能用new来实例化抽象类。
3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4. 抽象类只能用来被继承。
5. 抽象方法必须被子类实现。