文档章节

Java面向对象理论基础

短短的歼击机
 短短的歼击机
发布于 2013/12/26 00:49
字数 1064
阅读 17
收藏 0

一.面向对象基础理论

1.面向对象的理解
比如一个人
对象就是现实中实实在在存在的每个个体,每个人都是一个对象,这些对象都有自己的属性,如名字,年龄,性别等。
用面向对象的思想表示,代码如下:

[java] view plaincopy

  1. class Human  

  2. {  

  3.     int mName;  

  4.     int mAge;  

  5.     //...  

  6.       

  7.     void run();  

  8.     void jump();  

  9.     //...  

  10.       

  11. }  


class就是对象的具体描述,人可以跑,跳跃等,则是class中的函数。
类是一个抽象的概念,是对具体对象的描述,而现实中的人则是类的一个个实体对象。
比如一个叫王小二的人:

[java] view plaincopy

  1. Human 王小二 = new Human();  

这样就创建了一个Huamn的对象王小二,王小二是一个Human,则他拥有Human的一切属性和方法。

在面向对象中,我们不用关心类的具体实现,只需要知道其接口,就像开车一样,我们不会关心汽车的构造,发动机的具体实现,只需要知道方向盘,油门,刹车等等的使用

[java] view plaincopy

  1. 王小二.run();  



2.类之间的关系
依赖关系:use-a A类中的一个方法操作了另一个类中的对象。
聚合关系:has-a A类中的对象包含B类的对象。
继承关系:is-a  A继承了B类,此时A类不仅有了B类的方法,还加入了自己的方法。


3.面向对象的特性
(1)封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,
即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
(2)继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),
而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
java只支持单继承。
(3)多态性:
多态性是指允许不同类的对象对同一消息作出响应。
函数可以同名(参数不同,参数个数或者参数类型不同)
boolean isEquals2(int i);
boolean isEquals2(double i);
在调用的时候,不用区分这两个函数,系统会根据函数的参数类型,自动区分调用。


4.对象的接口
如上面Human的对象王小二,他提供的接口就是Human类中的public函数,

[java] view plaincopy

  1. class Human  

  2. {  

  3.     String mNmae;  

  4.     int mAge;  

  5.       

  6.     public void setAge(int age)  

  7.     {  

  8.         mAge=age;  

  9.     }  

  10. }  

这样在外部就可以调用这个函数,王小二.setAge();我们只需要知道通过setAge()就可以设定年龄,而不需要关系具体的实现,这就是封装的特性。
只需要提供一个接口,供外部来调用。作为外部的调用者唯一关心的: 接口是什么。
在类中实现的时候,用public,private,protected来控制外部的访问权限。


5.关于继承
比如有一个Dog类,表示狗这个物种,有一个Bird类,表示鸟,他们都是动物,有共同的属性,则可以让他们继承Animal类

[java] view plaincopy

  1. class Animal  

  2. {  

  3.     String mName;  

  4.     int mSex;  

  5.   

  6.     void run();  

  7.     void jump();  

  8. }  


然后Dog类可以继承自Animal

[java] view plaincopy

  1. class Dog extends Animal  

  2. {  

  3.       

  4. }  

这样Dog就自动拥有了Animal的属性。


java中的每一个类都必须继承自另一个类,如果没有使用extends则隐式的继承Object类,Object类是所有类的超类,
JDK中有说明:

--类 Object
-java.lang.Object
public class Object
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
从以下版本开始:
JDK1.0


© 著作权归作者所有

短短的歼击机

短短的歼击机

粉丝 82
博文 268
码字总数 269797
作品 0
武汉
高级程序员
私信 提问
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
2
0
求内推,求工作...........

基本信息: 姓 名: 李XX 性 别: 男 年 龄: 22 民 族: 汉 户 籍: 广东省-云浮市 身高体重: 170cm 60KG 婚姻状况: 未婚 学 历: 本科 毕业院校: 广东商学院华商学院 专业名称: 计算机科学与技术 ...

lijegd
2013/10/18
1K
28
【上海】知名500强公司诚招开发工程师!~

【上海】知名500强公司诚招开发工程师!~ 猎头公司:华盛瑞达 联系人:Viva 有意者请将简历发送至邮箱:viva*great-consulting.com(“*”请改为“@”,并注明应聘职位的名称) 工作地点:上...

Vivabee
2012/03/02
844
8
上海工作-阿里巴巴招聘Java架构师、Hadoop、分布式职位,海量数据架构师

平台架构师(工作地点-上海)---薪资30万以上 职位描述 1、发展阿里巴巴应用开发框架和开发工具 2、建立阿里巴巴内部可共用技术库 3、解决疑难技术问题 4、参与公司内外的技术交流 职位要求 ...

ears
2010/12/28
5.8K
23
Java 程序员的错

编者注:可以喷语言,但不要搞人身攻击! BTW:我也是一名 Java 程序员,哈哈! Java程序员是有问题的。我使用Java编程已经有10多年的历史。同时,我还有过大量的使用其它语言开发的经历,比...

oschina
2014/07/29
8.5K
92

没有更多内容

加载失败,请刷新页面

加载更多

shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
1
0
微服务架构依赖图

基于spring-cloud-alibaba + dubbo

龙影
昨天
3
0
Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部