1.1 抽象类的概念
首先来看到抽象这两个字,抽象其实是与具体对应的概念,在我们面向对象的概念中,所有的对象都是由类来描述的,如果我们反过来呢?所有类都是用来描述对象的吗?不一定!如果一个类中没有包含足够的信息来描述对象,这样的类就是抽象类。
拿我们上期举过的动物类来说,狗和猫,分别吃的是狗粮和猫粮,为了实现多态,子类重写了父类的 eat 方法,那其实很显然我们父类 eat 其实并没有什么实际的工作,主要的工作都是子类重写的 eat 方法,像这种没有实际工作的方法,我们就可以把他设计成一个抽象方法(abstract mewthod),而包含抽象方法的类,我们称为抽象类(abstract class)。
1.2 抽象类的语法
在Java中,被 abstract 修饰的类为抽象类, 抽象类中被 abstract 修饰的方法为抽象方法,抽象方法不能有具体的实现。
代码:
public abstract class Animal {
private String name;
private int age;
//抽象类中可以有构造方法,用来初始化抽象类的成员变量
public Animal() {};
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
//抽象类的方法没有加限定符,默认是public
int getAge() {
return age;
}
abstract void eat(); //抽象方法没有加访问限定符时,默认是public
abstract void cry(); //抽象方法没有加访问限定符时,默认是public
}