Java——抽象类与抽象方法(什么是抽象类?什么是抽样方法?特点是什么?作用是什么?有什么意义?)

抽象类:顾名思义就是比较抽象........的类......

记住一句话:每一个技术的出现都是为着解决某一个问题的。

因此,在学习的过程中,多思考如何解决某一个问题,从一个设计者的角度出发,能够让我们更容易理解技术的本质。剩下的无非就是一些制式的规则和运用罢了。

一、为什么会有抽象类?

抽象类是在继承的基础上延伸出来的设计。假设有:父类Animal,子类有Dog和Cat。

Dog属性:年龄,颜色 行为:吃骨头

Cat属性:年龄,颜色 行为:吃小鱼干

那么我们现在就可以抽取共同属性和共同行为到父类中,构建一个继承体系如下:

但是这里有一个问题:就是抽取eat方法的时候,方法体里面应该写什么? 

请问写吃什么?

吃骨头?那Cat要重写eat方法

吃小鱼干?那Dog要重写eat方法

不对!乱套了!冥冥中蛋疼的感觉!这个改那个不改的,一旦子类多起来不就乱套了他奶奶的?

怎么办?写这个也不行,写那个不行,我不写行不行?

嗯!对了,就是不写方法体!

什么都没有,不就是抽象吗?

这就是抽象的来由。

所以:不写方法体的方法叫做抽象方法,而写有抽象方法的类叫做抽象类

同时:有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法

二、抽象类、抽象方法的定义格式

抽象类:public  abstract  返回类型 类名 { }

抽象方法 public  abstract  返回类型 方法名 (参数类型);

三、在抽象类的父类中,可以有构造方法。

怎么理解?抽象类只是对于抽象方法而言,就是多了一个abstract而已,其他的内容和我们之前书写JavaBean是一样的。

四、抽象子类的继承:

有两个选择:

1、要么子类必须也是抽象类才能继承抽象父类,即父类是抽象类,子类也必须是抽象类

2、要么子类需要重写父类所有的方法

注意:抽象类不能实例化,不能实例化不能创建对象

是我毕竟是要创建对象的,不能创建对象那我还写个锤子代码?

所以,要创建对象,就只能重写方法

这下相当于强制重写方法

这有什么意义呢?

意义:

  试想,我们写一个大的项目的时候肯定不是一个人写的,而是很多人一起合作。

每个人的想法不一样,例如说一个eat方法,甲认为既然是吃东西,吃的不一样,就要传参数;

而乙认为不需要,那就会导致书写的eat方法不一致。

调用简直蛋疼,你还要去看人家写的是什么你才能决定用不用。

但是,如果都抽取为抽象方法,那么,你就不需要去看别人写的代码,

直接重写,按照你自己的意思去写,后面无论是谁来用都是如此。

不乱,方便,舒坦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十5画生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值