java学习面向对象之抽象类
什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派。拿一桶画彩就这么往画布上一泼,那就是抽象。那么java世界当中什么是抽象呢?我们再拿动物还有狗的这个例子来讲吧,因为这个非常的好理解。比如说,你可以说狗吃饭吧,然后小狗狗就去吃饭了。那么你能说,动物你去吃饭吧?这个就搞的我们有点迷糊了,动物怎么吃饭,动物是一个类的概括。就向你去菜市场买鸡吃,你冲老板说:我来买个动物。动物只是个概念而不是一个具体到某一个具体的类别的动物,这里动物这个概念就是抽象的,我们并不能具体知道,别人的所指是一个具体的什么东西。还有,我们在一个类当中,比如拿动物这个类来说吧,定义一个吃的方法,但是这个方法,并没有必要具体的定义实现细节,因为动物一个睡觉的动作是不确定的,马可能会站着睡,狗趴着睡,各种睡法,你根本不能够确定具体的实现细节,那么这里直接抽象就好了,怎们抽象,那么这里就引入了抽象类和方法的关键字:abstract。上述例子用java代码来描述的话就是:
abstract class Animal
{ abstract void eat(); } class Dog extends Animal
{ void eat()
{ System.out.print("I eat grass and meat"); } }
这里有几点需要注意的事情:
1、抽象方法被abstract关键字修饰之后,就不能再有方法体了。
2、一个类当中如果有一个方法是抽象的,那么这个类必须是抽象的;但是,如果一个类是抽象的,那么这个类中不一定有抽象的方法。
3、如果一个类继承了一个父类,但是这个父类当中有一个方法是抽象的,如果这个类没有重新覆盖并且实现这个方法体,那么这个类也是抽象的。
4、抽象类不能够被实例化。当我们试图去实例化一个抽象类的时候,会报错。
抽象类细节:
1、抽象类可以有构造函数么?
可以,因为虽然构造方法抽象类自身是不能够使用的,但是可以供其子类来使用。
2、抽象类可以不定义抽象方法么?
可以。这样的目的是防止,抽象类被直接使用。
3、抽象关键字不可以和哪些关键字共存?
private、final、static
4、抽象类和一般类的区别?
一般类可以被实例化、抽象类不能够被实例化;
一般类当中只能有具体方法,不能够有抽象方法;
抽象类必须被abstract关键字修饰
抽象类必定是父类
一般类是对一个事物充分的描述,而抽象类可能是非充分的描述
5、抽象类一定是个父类么?
肯定是个父类,如果抽象类想被使用的话,他必须被继承且实现其中所有的抽象方法。
最新文章
- android 拔打电话功能
- ng-style 的坑 - 对性能的影响
- IE下载时提示无法下载,重试后成功
- 第一个servlet小例子
- Hadoop概念学习系列之常见的分布式文件系统(二十六)
- mongoDB中的连接池(转载)
- ajax GET和POST请求web api 的几种方式
- cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。
- VSTO之旅系列(二):创建Excel解决方案
- Java面试准备之探究集合
- OSGI target环境配置过程
- 第一次跑eureka
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- C#学习-静态
- Java SE之String,字符串和子字符串的存储与区别
- 用Maven构建Mahout项目
- 第15章 高并发服务器编程(1)_非阻塞I/O模型
- js string 和 json 互转
- Chrome JS断点调试技巧
- centos7 安装java+tomcat
热门文章
- RedHat7安装Nginx及第三方模块
- codeforces 148D Bag of mice(概率dp)
- 项目打包 tomcat部署
- IIS配置不正确可能导致“远程服务器返回错误: (404) 未找到";错误一例。
- NFC手机
- Android eclipse - aapt.exe has stopped working.
- 额定能量不得超过160Wh, 等同是多少mAh电池容量?
- 关于Apple设备私有的apple-touch-icon属性详解
- Vive开发教程汇总
- winform C#屏幕右下角弹出消息框并自动消失