抽象类——加油站加油
抽象类:
格式: 修饰符 abstract class 类名
抽象方法:抽象类中定义的子类必须完成功能的功能的基本需求
格式: 修饰符 abstract 返回值类型 方法名称(形参列表)
抽象类是用来被继承的,抽象方法是交给子类重写实现的。
一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。(用我通俗的理解就是。一般父类是抽象类的话,他所定义的那些抽象方法,你这个子子类也要用到这些方法)。
抽象的特点:有得有失( 不能创建对象)
(留一个枚举的格式吧,以防用到:
都是最终类,不可以被继承,相当于多例模式)
举个抽象类的案例:
做一个系统:一个加油站推出两种卡,一种是预存 10000 元的金卡,后续加油享受 8 折优惠,另一种是预存 5000 元的银卡,后续加油享受 8.5 折优惠。请分别是两种卡片进入收银系统后的逻辑,卡片需要包含主人的名称、余额、支付功能。
个人分析:从中可以看出金卡,银卡都包含名称、余额。然而支付功能因为金卡,银卡是不同的优惠,因此可以定义一个父类,包含这两个所共有的(金额,名称),支付功能可以在子类的每个方法中分别定义。
父类 card
金卡子类 GoldCard
银卡(其实就是把金卡的打折改一改,加一下限制就行了,我就不整了,下面给大家一个面试重要考点补过来)
面试考点:final 与 abstract 是什么关系? 互斥
(解释一下:final 是最终方法,不能被重写,不能被继承,然而 abstract 很希望自己可以被继承,因为他那个抽象类方法只有子类征用了,定义这个抽象类才有意义,个人理解,用大白话给大家都说,错误可以指正)
版权声明: 本文为 InfoQ 作者【Geek_10c5db】的原创文章。
原文链接:【http://xie.infoq.cn/article/ef91c5213d825cbc4e608c225】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论