Java对象的两大特征_科学网—Java 面向对象的四个特征 - 李玖栋的博文
1.抽象:
抽象——就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来一般叫做类或者接口。)抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是数据抽象,二是过程抽象。
数据抽象——就是用代码的形式表示现时世界中一类事物的特性,就是针对对象的属性。比如建立一个鸟这样的类,鸟都有以下属性:一对翅膀、两只脚、羽毛等。抽象出来的类都是鸟的属性,或者成员变量。
过程抽象——就是用代码形式表示现实世界中事物的一系列行为,就是针对对象的行为特征。比如鸟会飞、会叫等。抽象出来的类一般都是鸟的方法。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。因此可以说,继承是为了重用父类代码,同时为实现多态性作准备。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。总的来说,方法的重写、重载与动态链接构成多态性。Java引入多态的概念原因之一就是弥补类的单继承带来的功能不足。(为规避C++中多继承造成的复杂继承问题,java采用单继承。)
动态链接——对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态链接。
注意:继承与重载:一是子类与父类的关系,二是重载方法的调用问题。
子类对象可以直接当成父类对象使用,但反过来就不可以。举例来说,人是父类,学生是人的子类,所以学生对象一定具备人对象的属性,但是人对象就未必具有学生对象的特性。所以学生对象可以当做人对象来使用,但是人对象就不能当做学生对象使用。注意当把子类对象当成父类对象使用时,子类对象将失去所有的子类特性,只保留与父类同名的属性和方法(同名方法不仅是函数名相同,而且参数类型也要一样,否则不予保留)。此时可以对父类方法进行重写。
一个类中如果定义了重载的方法,则系统在调用方法时,会根据参数的类型自动选择调用合适的方法。
转载本文请联系原作者获取授权,同时请注明本文来自李玖栋科学网博客。
链接地址:http://blog.sciencenet.cn/blog-469621-379622.html
下一篇:智能程序应具有的功能
Java对象的两大特征_科学网—Java 面向对象的四个特征 - 李玖栋的博文相关推荐
- java源程序分为两大类_根据程序运行的环境不同,JAVA源程序分为两大类,那两个类?-----并解析什么意思...
根据程序运行的环境不同,JAVA源程序分为两大类,那两个类?-----并解析什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来 ...
- java8安装_科学网—Java JDK 8 的安装以及环境变量的配置(Linux and Windows) - 彭勇的博文...
Java JDK 8 的安装以及环境变量的配置(Linux and Windows) JDK(Java Development Kit)包括了Java语言的编译器,可以在这里下载: 根据操作系统选择相 ...
- java判断路径是否存在_科学网—Java判断文件目录以及文件是否存在 - 林清莹的博文...
在项目中需要判断文件额路径是否存在,以及路径下的文件是否存在,这对于软件的人性化是一个指标, 最近在查找相关资料后,特将方法写出来以便日后用到. /** * 判断文件及目录是否存在,若不存在则创建文件 ...
- ieee期刊的科技写作思路曹文平_科学网—怎样向IEEE期刊投稿* - 吴雄君的博文
* 作者郭更生教授:曾任IEEE Transactions on Communications Magazine总编,IEEE Communications Magazine高级技术编辑,台湾某大学教 ...
- r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文
这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...
- mh采样算法推导_科学网—MCMC中的Metropolis Hastings抽样法 - 张金龙的博文
Metropolis Hastings抽样法示例 jinlongzhang01@gmail.com Metropolis Hasting(下面简称MH)是蒙特卡罗马尔科夫链中一种重要的抽样方法.本文简 ...
- l2空间的完备性_科学网—话说泛函---Hilbert空间[转] - 陆慧敏的博文
一百年前的数学界有两位泰斗: 庞加莱和希尔伯特, 而尤以后者更加 出名(在我的汉字系统下希尔伯特居然是一个词组), 我想主要原因是他曾经在1900年的世界数学家大会上提出了二十三个著名的希尔伯特问题 ...
- pfamscan 的使用_科学网—[转载]InterProScan的使用教程 - 黄顺谋的博文
InterPro是一个数据库,其提供蛋白序列的功能分析并归纳为一个个蛋白家族,同时还预测了presence of domains和important sites.为了将蛋白分类,InterPro使用先 ...
- r语言算巢式设计方差分析_科学网—巢式设计之R篇 - 林元震的博文
巢式设计(Nested design),也称为嵌套设计或系统分组设计.把研究对象分成若干组,每组内又分若干亚组,每个亚组又有若干观测值的设计,称为巢式设计.根据因素数的不同,巢式设计可分为二因素(二级 ...
最新文章
- Python源码学习:多线程实现机制
- docker 鱼龙混杂之基础操作篇
- 斯坦福抢开“元宇宙”第一课,上起来还真不便宜
- 女生学编程有哪些好处呢?
- DelphiXE7中创建WebService(服务端+客户端)
- python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
- maven 部署nexus_设置本地Nexus存储库并从Maven部署WAR文件
- ConcurrentLinkedQueue
- NoSQLBooster for MongoDB 中跨库关联查询
- FISCO BCOS 区块链 设置交易最晚处理区块高度
- 电子邮件如何追溯到他们的源IP地址
- 基于高德地图api的热力图配置及显示调优
- 计算机开关电源 原理与应用,开关电源原理与应用设计
- PDF解密工具—Cisdem PDF Password Remover
- RGB颜色值与十六进制颜色码转换及颜色码对照表
- 金仕达程序化交易平台初步设计
- 如果一个n位正整数等于它的n个数字的n次方和,则称该数为n位自方幂数。编程计算并输出所有的n的所有情况。
- c语言实例--打渔晒网问题
- 如何使windows系统环境变量的改变即时生效
- zotero配合坚果云和papership进行文献管理
热门文章
- 关于外部测试字段解释冲突
- C++中的struct与class继承方式
- ubuntu下vim与系统剪切板互相拷贝
- C# COM Object for Use In JavaScript / HTML, Including Event Handling(转载)
- 每天学一点flash(67) 上传图片
- ie下的firebug
- “软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
- 在Win10 LTSC 2019上安装和卸载linux子系统
- SonarQube安装步骤 Windows10系统
- chkconfig、mount、shutdown