一、简介
描述:
- 'abstract'修饰符可以用来修饰方法,也可以修饰类。
- 如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
- 抽象类和抽象方法起到一个框架作用,方便后期扩展的重写和调用。
注意:
- 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
示例:
/* 抽象类的命名规范为以Base或Abstract开头 */
public abstract class BasePerson {
/* 抽象方法,没有方法实现 */
public abstract void doSomething();
public void say() {
System.out.println("person");
}
}
二、抽象方法
描述:
- 声明方法的时候,加上'abstract'修饰符,并且去掉方法的大括号,同时结尾加上分号,该方法就是抽象方法。
- 抽象方法只有方法的声明,没有方法的实现(没有方法体),它是用来让子类实现的。
作用:
- 抽象方法是为了程序的可扩展性,重写抽象方法可实现方法同名但又非同目的的要求。
- 定义抽象方法,在需要时继承后重写调用,可以省去很多代码。
三、抽象类
描述:
- 声明类的同时,加上'abstract'修饰符就是抽象类。
- 抽象类不能使用'new'关键字来创建对象,它是用来让子类继承的。
注意:
- 子类继承抽象类后,需要实现抽象类中没有实现的抽象方法,否则这个子类也要声明为抽象类。
- 抽象类不能被实例化,但有构造器,会在子类实例化时调用,是用来实现多态中的共同点构造,一般不建议使用。
示例:
public abstract class BasePerson {
public abstract void doSomething();
}
/* 子类继承抽象类后,需要实现抽象类中没有实现的抽象方法。 */
class Student extends BasePerson {
public void doSomething() {
System.out.println("doSomething");
}
}