抽象:abstract
是具体的反义词
和模糊,不确定,不清晰有的类似
1、什么情况下会用到抽象?
当我们在声明一个父类时,某个/些方法的实现不清楚,或者说无法给出具体的实现,
要等到具体的子类中才能给出具体的实现,那么这样的方法,就可以声明为抽象方法。
抽象方法没有方法体
2、抽象方法
语法格式:
【其他修饰符】 abstract 返回值类型 方法名(【形参列表】);
3、抽象类
如果一个类中包含了抽象方法,那么这个类必须是一个抽象类。
语法格式:
【其他修饰符】 abstract class 抽象类名{
【其他修饰符】 abstract 返回值类型 方法名(【形参列表】);
}
例如:我们声明一个图形类:Graphic
我们知道在图形这个事物中,不管是什么图形,都有两个特征:(1)求面积(2)求周长
4、抽象类的特点
(1)抽象类不能实例化,不能直接创建对象或者说,不能创建抽象类的对象
(2) 如果子类继承了抽象类,必须重写父类的所有的抽象方法,否则子类也得是一个抽象类
(3)抽象类也有构造器,这个构造器不是为了创建抽象类自己的对象用的,而是为子类创建对象服务的
(4)抽象父类与子类的对象之间可以构成多态引用
(5)抽象类中也可能没有抽象方法,目的就是不能你创建它的对象
像这种没有抽象方法的抽象类,存在的意义
(1)为了多态的应用,因为父类可以管理各种子类对象
(2)不希望你创建这个父类的对象,而是创建子类的对象
如果一个类中包含了抽象方法,那么这个类必须是一个抽象类。
1、abstract:抽象的
2、可以修饰什么?
(1)类
(2)方法
3、修饰类的话,和那些修饰符不能一起使用
类:public和缺省
final
abstract和final不能一起修饰类。
4、修饰方法,和那些修饰符不能一起使用
方法:4种权限修饰符
static,final,abstract,native
(1)final,abstract不行 因为final不能被重写
(2)static,abstract不行 因为static不能被重写
(3)native,abstract不行 因为都没有方法体,不知道是什么情况,会有歧义
(4)private,abstract不行 因为private不能被重写