首页 > 代码库 > 抽象 & abstract关键字
抽象 & abstract关键字
抽象类
抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类
随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫抽象类。
个人理解:子类变得越来越多,涵盖范围越来越广,以至于囊括几乎所有情形,父类变得更多是一种“形式”,甚至变得无用。比如“人”作为父类,而当子类涵盖几乎所有类型的“人”后,父类“人”就变得抽象。
1.抽象类不能被实例化
2.但是抽象类有构造器(否则子类怎么调用super()呢)且可以正常定义 “凡是类,一定有构造器”
3.抽象方法所在的类一定是抽象类,但抽象类中可以有非抽象方法
4.如果抽象类的子类没有把该抽象类的所有方法重写(相当于该子类还有抽象方法),那么此子类须是抽象的(参见第3点),但如果把抽象父类的方法全部重写了,那么此子类可以是非抽象的并被实例化(注意,这里的“所有方法”指的是所有的父类的抽象方法)
一旦类被定义成abstract的之后,此类中的方法没有了实际作用,但是方法声明还是要保留(因为子类要重写/实现,或者在使用多态性时让编译通过):
抽象方法
1.格式:没有方法体和大括号,如
public abstract void eat();
2.抽象方法只保留作为一个方法的功能而存在,具体执行的操作交由子类完成(实现)
abstract
使用限制:不能与private(私有方法不能被重写,详见方法的重写)、final、static共用,不能修饰属性、构造器。
抽象 & abstract关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。