什么是抽象类
用abstract关键字修饰的类,这个类就是抽象类。 访问修饰符 abstract 类名{}
什么是抽象方法
用abstract关键字修饰的方法,并没有具体的实现,这个方法就是抽象方法。
访问修饰符 abstract 返回类型 方法名(参数列表)//没有方法体
注意:访问修饰符不能是private!!!
抽象类的价值
抽象类更多的价值在于设计,设计者设计以后,让子类继承并实现抽象类。
什么时候使用抽象类呢?
父类的方法的实现方向不确定,考虑将该方法设计为抽象方法。
当一个类中存在抽象方法时,这时就需要将该类声明为abstract类。
一般来说,抽象类会被继承,由其子类去实现抽象方法。
抽象类的细节
- 抽象类不能实例化,就是不能创建对象。
abstract class aa{}
你不能 new aa();编译会报错。 - 抽象类不一定要含有抽象方法,但是有抽象方法的一定是抽象类。
- 一个类只要包含了抽象方法,那么这个类一定要声明为abstract。
- abstract 只能修饰类和方法,不能修饰属性和其他的。
- 抽象类可以有任意的成员,比如:非抽象方法,构造器,静态属性等。有构造器,不代表可以有实例。
- 抽象方法不能有主体,既不能实现。
当去掉 { } 就可以了。但是注意要有 ; 分号。
- 如果一个类继承了抽象类,则必须实现抽象类中的所有的抽象方法,除非子类也声明成抽象类。
- 抽象方法不能被private,fianl和static来修饰,因为这些关键字都是和重写相悖的。