Java面向对象-抽象类

Java抽象类的概念
java面向对象具有封装,继承,抽象,多态这四种特征,其中抽象特征也是java面向对象重要的特征之一!在面向对象的概念中,所有的对象都是通过类来描绘的,但不是所有的类都是用来描绘对象的,比如抽象类,抽象类没有包含足够的信息描绘对象时是无法描绘一个具体的对象的,抽象类跟继承中的所谓的父类类似!不同的是抽象类不能实例化调用!只能被继承时才能被使用,抽象类好比如一个父类模板,设计者依据它的格式来修改并创建新的类,但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,然后再由子类进行创建对象。

注意事项:
1.抽象类的使用同样存在单继承的局限,即一个子类只能继承一个抽象类。
2.抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。
3.抽象类不能实例化对象,所以抽象类必须被继承,才能被使用
5.在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象。
从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象。甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现。

抽象类的定义及使用规则:
包含一个抽象方法的类必须是抽象类;
抽象类和抽象方法都要使用abstract关键字声明;
抽象方法只需声明而不需要实现;
抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。

抽象方法概念:
抽象方法:只给出方法定义而不具体实现的方法,抽象方法是没有方法体的,其具体实现由它的子类确定。
abstract关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。

抽象方法格式:
[修饰符] abstract 返回类型 方法名();
注:修饰符 (public protected private)三选一

声明抽象方法的影响结果:
如果一个类存在抽象方法,那么该类必须是抽象类。
任何子类要么重写父类的抽象方法,要么声明自身为抽象类。
继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。
最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。

使用 abstract 修饰符来表示抽象方法和抽象类。
抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。
类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。
例子:
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

在下列情况下,一个类将成为抽象类:
当一个类的一个或多个方法是抽象方法时;
当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法主体时;
当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法主体时;

注意:以上说的抽象类情况是相对的!而不是绝对的,抽象类不一定包含抽象方法。
但包含抽象方法的类一定是抽象类。

抽象类注意事项:

  1. 抽象类不能被实例化,抽象类的构造方法只有抽象类的非抽象子类在创建对象后才能进行调用。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

  6. abstract与 static不能同时修饰一个方法

  7. 一个抽象类不可以使用final关键字声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值