A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

趣味Java之面向对象六
(趣味Java系列作者:就业部王成房老师)
剧情回顾:
上一集说到了面向对象关于方法的重写,重写就相当于覆盖,重写过后,子类的对象再进行调用的时候就调用的是覆盖过后的方法,重写的格式:返回值,方法名,参数列表,必须一模一样。
本集剧情:
抽象类中的抽象方法
啥是抽象类啊抽象方法啊??
来我们看下上一章的代码
继续看下子类的代码
继续 我们来看测试类

然后我们看下运行结果

以上结果 可以看的出来我们的结果都来自于重写的方法 那么问题来了!
我们在父类中的方法,就是吃鸡腿的方法,用到了么???
好像每个人都没有吃鸡腿诶~~~~
那么我们想一个问题,既然我们从来就没用这个吃鸡腿的输出语句,那么我们还用写么?
你们:不用!!
意思是写成这样?

嗯好 这样编译也是通过的,但是既然我们连逻辑都不写,我们能不能方法体也不写呢?
方法体是什么鬼??
我:.....................方法体就是两个大括号啊!
你们:哦~~~~,哪到底能不能不写呢??
我:好吧我们来试一试!!看代码

所以说这种语法是不行的,那么怎么办呢?
不要谎,伟大的java为我们提供了抽象方法这个东西,什么是抽象方法,就是使用关键字,abstract修饰的方法就是抽象方法,抽象方法就不需要些方法体。
来我们来看下 怎么写:

大家来看,我前面加了abstract,为什么还是报错呢?
是这样的 这是一个重点概念大家一定要重点去记忆:抽象方法必须存在于抽象类中!!!
大家记住了么?
你们:我们只想问抽象类是个什么鬼??
我:这就是我解下来要说的点,抽象类就是被abstract 修饰的类,来大家看代码:
大家看上面的代码,把父类 变成抽象的,里面的方法就可以不用写方法体了!
大家再看下我们的这个代码
看上面的代码,我们创建了一个父类出来,但是好像并没有用父类创建对象,那么我们的
抽象类就规定了一个概念:既然不用父类创建对象那么抽象类就不能创建对象!!
我们试一下,看代码:
所以抽象类是不能创建对象的,因为你们也不用他,所以就规定死了,
然后从字面解释也可以,创建对象也叫实例化,抽象的怎么能变成实际的呢???
以上概念一定要记熟。
那么我们再看一下,我们是不是没个类都重写了eat()方法呢?

恩,看来每个类都重写这个方法,如果我不重写呢?
上面的代码显示,没有重写抽象方法报错,所以父类的抽象方法必须被每个子类重写!!
然后我们想一下,抽象类的存在意义什么??
你们:啊???
我:听为师慢慢道来~~
我们发现上面的写的抽象类,里面的抽象方法都是子类拥有的但是回去重写,所以抽象类就是用来被继承,抽象方法就是每个子类所共有的一些方法,抽取成抽象方法写在父类中,用来保证每个子类必须都拥有,然后让子类去重写。
其实意义就几个字:就是用来被实现。

总结:
以上就抽象类的知识点,现在总结一下,抽象类和抽象方法都是被abstract修饰的,然后抽象方法必须存在于抽象类中,而抽象类中不一定都是抽象方法,因为还有get和set方法嘛,这些都是普通方法。重点记住,抽象类不能创建自己的对象!

3 个回复

倒序浏览
需要老司机照片请找小舞,需要趣味Java下一章请找小舞,需要Java、Android学科资料请找小舞
回复 使用道具 举报
很多代码还是在电脑上看起来比较清晰、手机上格式都乱了
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
学习 学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马