抽象类
一、概念
类的声明中有abstract关键字的类称为抽象类,不能被实例化。没有abstract关键字修饰的类称为具体类,具体类可以实例化。
二、用途
在程序设计中,抽象类常用于对某些类进行概括和抽象,即抽象类定义其子类共有的属性和方法,以免子类重复定义。也就是说,抽象类主要用于定义为若干个功能类同的类的父类。
三、特点
- 不能new创建抽象类的实例。
- 与具体类相同的是,类中可以有成员变量和成员方法,包括构造方法,但与具体类不同的是,抽象类中可以定义抽象方法。
- 抽象方法只能出现在抽象类中,但抽象类中可以没有抽象方法。
- 抽象类中的所有抽象方法必须在其非抽象子类中加以实现,否则子类也必须声明为抽象类。
- 一个抽象类可以是public、private、protected、default,接口只有public;
四、抽象方法
类的成员方法中声明有abstract关键字修饰的方法称为抽象方法。抽象方法用来描述系统的功能或者规范某些操作。没有abstract关键字修饰的方法称为具体方法,具体方法必须有方法体。
注意:
- 构造方法不能被声明为抽象的
- abstract和static不能同时存在,即不能有abstract static 方法。
- 任何包含抽象方法的类必须被声明为抽象类
- 一个抽象类中的方法可以是public、private、protected、default,接口中的方法只能是public和default。
最终类
一、概念
最终类是指不能被继承的类,即不能再用最终类派生子类。在Java语言中,如果不希望某类被继承,可以声明这个类为最终类。最终类用关键字final来说明。
public final class FinalClass{
//...
}
二、特点
- 最终类中的方法都自动成为final方法。
- 一个类不能既是最终类又是抽象类,即关键字abstract和final不能合用。
- 最终类不能被继承,最终方法可以被继承,但是不能被重写。