java抽象的东西具体化_java基础之抽象类

java的继承说完后..让我们来了解了解抽象类...

我们之前说过,将一件事物抽象成具体属性和方法后,并将其封装就是类了.如下图

30dc441fc81edcc93fd0ee1d01421124.png

我们将人的名字,性别,以及睡觉的方法扔进了类Person中,(专业术语:封装成Person类)

发现没,虽然我是说将人的属性,方法抽象封装成类...但是,你没发现我们抽象得过于具体了吗?没发现?

我之前说的,将人的属性,方法抽象后封装进类里面,但是......你难道不觉得name名字,sex性别太过于具体了吗?还有就是.人的确有睡觉这个方法(行为),当是,,你直接就将其睡觉的方法定义成横着睡...这是不是......

所以我们可以这么说,Person这个类使我们抽象出来的东西具现化了.我们本来只是将属性抽象出来,但是现在我们却将他们初始化了,比如名字改为了TianYiLuo 性别改成了男...

所以说,我们应该将这个事物给高度概括一下...哦 我先提一下.在抽象类中.我们只负责方法(行为)的抽象,属性那个东西我们不管..至于为什么....太麻烦.没必要

来..让我们将人的方法(行为)来个高度抽象吧....人有什么方法呢..睡觉..吃饭好了 就暂时抽象这两个了...先声明..我不是只会吃饭睡觉蛤...我还会潜水...嘿嘿

抽象类跟我们之前见到的正常的类没什么区别..只不过实在类和方法前面添加一个abstract而已...看下图

0182d5b28bca5b078340e567e7179021.png    

4f44258c2e37a7928bad2a5c5142b184.png

这就抽象完了....是不是很简洁啊..抽象类跟普通类之前最主要的区别就是没有方法体..方法体就是大括号里面的内容,并且抽象类没有办法new对象...

将事物高度概括成抽象类之后...不要以为就没事儿了...事情还多呢....

别跟我说...你将封装成类之后就不管了...我之前不是说了的嘛..抽象类里面装的东西就是某类事物共有的方法...那啥来着...交集 ,所以我们要使用这个类的时候就要将其具体的方法描述出来...

那么该怎么描述呢....当然是用继承啦...看图

88c62928ab858f18e1871e9bee917edd.png

在这里,我们是用student这个类将Person里面的抽象方法给具体化.当然还可以用其他的类,只要是与Person(人)类有关的都可以,比如说worker(工人)teacher(教师)都可以,或许我举的例子不是很形象..我就简单的解释一下....想象一下,每个人都有自己的不同的行为,方法...比如说同是睡觉..我可以横着睡觉,侧着睡觉,站着睡觉,躺着睡觉..看,每个方法的具体过程都不同..但是依然是睡觉..所以我们可以将其定义成抽象类.

当然,这里要提醒一下,抽象类的子类必须将父类的方法全部具体化(复写)..否则,这个子类任然是抽象类..并且无法创建对象

15ab4e6c97e2c053666276c83e4eedf0.png

所以使用抽象类的时候一定要注意将所有的方法都复写一次

使用抽象类的好处:

1.我们可以让程序具有更好的拓展性...这个后面将java多态的时候我会讲..

2.让程序的条理更加清晰,当我们使用抽象类后,无论子类是什么,我们都可以通过抽象类来大致看出子类的功能,比如说Person是抽象类,那我们就可以知道,其子类就是不同的人,如果Door是抽象类,其子类自然就是不同的Door(门)啦..

最后,我在来补充一个很容易被忽视的东西....关于权限修饰符的问题..我这里讲随便说说,java中权限的大小顺序是:

public > protected > default > private

如果父类的方法method1用public修饰,那么子类在继承并复写该方法的时候只能用public修饰.否则报错 我举个例子

5824f32727a57dd38db63f9a6677846e.png

在java中如果不加权限修饰符,则会使用默认的default权限,然后错误就发生了..使用低权限(default)覆盖高权限(public)的错误

一定要记住..高权限可以覆盖低权限....但是低权限不能覆盖高权限...我下面用图说明

6ffa61f278328f94cd6c62ad06388fca.png

..吐槽一句...Windows自带画图工具用不来.....

原文:http://www.cnblogs.com/TianYiLuo/p/6709803.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值