1.抽象:

抽象——就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来一般叫做类或者接口。)抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是数据抽象,二是过程抽象。

数据抽象——就是用代码的形式表示现时世界中一类事物的特性,就是针对对象的属性。比如建立一个鸟这样的类,鸟都有以下属性:一对翅膀、两只脚、羽毛等。抽象出来的类都是鸟的属性,或者成员变量。

过程抽象——就是用代码形式表示现实世界中事物的一系列行为,就是针对对象的行为特征。比如鸟会飞、会叫等。抽象出来的类一般都是鸟的方法。

2.继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。因此可以说,继承是为了重用父类代码,同时为实现多态性作准备。

3.封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。

4. 多态性:

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。总的来说,方法的重写、重载与动态链接构成多态性。Java引入多态的概念原因之一就是弥补类的单继承带来的功能不足。(为规避C++中多继承造成的复杂继承问题,java采用单继承。)

动态链接——对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态链接。

注意:继承与重载:一是子类与父类的关系,二是重载方法的调用问题。

子类对象可以直接当成父类对象使用,但反过来就不可以。举例来说,人是父类,学生是人的子类,所以学生对象一定具备人对象的属性,但是人对象就未必具有学生对象的特性。所以学生对象可以当做人对象来使用,但是人对象就不能当做学生对象使用。注意当把子类对象当成父类对象使用时,子类对象将失去所有的子类特性,只保留与父类同名的属性和方法(同名方法不仅是函数名相同,而且参数类型也要一样,否则不予保留)。此时可以对父类方法进行重写。

一个类中如果定义了重载的方法,则系统在调用方法时,会根据参数的类型自动选择调用合适的方法。

转载本文请联系原作者获取授权,同时请注明本文来自李玖栋科学网博客。

链接地址:http://blog.sciencenet.cn/blog-469621-379622.html

下一篇:智能程序应具有的功能

Java对象的两大特征_科学网—Java 面向对象的四个特征 - 李玖栋的博文相关推荐

  1. java源程序分为两大类_根据程序运行的环境不同,JAVA源程序分为两大类,那两个类?-----并解析什么意思...

    根据程序运行的环境不同,JAVA源程序分为两大类,那两个类?-----并解析什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来 ...

  2. java8安装_科学网—Java JDK 8 的安装以及环境变量的配置(Linux and Windows) - 彭勇的博文...

    Java JDK 8 的安装以及环境变量的配置(Linux and Windows) JDK(Java Development Kit)包括了Java语言的编译器,可以在这里下载: 根据操作系统选择相 ...

  3. java判断路径是否存在_科学网—Java判断文件目录以及文件是否存在 - 林清莹的博文...

    在项目中需要判断文件额路径是否存在,以及路径下的文件是否存在,这对于软件的人性化是一个指标, 最近在查找相关资料后,特将方法写出来以便日后用到. /** * 判断文件及目录是否存在,若不存在则创建文件 ...

  4. ieee期刊的科技写作思路曹文平_科学网—怎样向IEEE期刊投稿* - 吴雄君的博文

    * 作者郭更生教授:曾任IEEE Transactions on Communications Magazine总编,IEEE Communications Magazine高级技术编辑,台湾某大学教 ...

  5. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文

    这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...

  6. mh采样算法推导_科学网—MCMC中的Metropolis Hastings抽样法 - 张金龙的博文

    Metropolis Hastings抽样法示例 jinlongzhang01@gmail.com Metropolis Hasting(下面简称MH)是蒙特卡罗马尔科夫链中一种重要的抽样方法.本文简 ...

  7. l2空间的完备性_科学网—话说泛函---Hilbert空间[转] - 陆慧敏的博文

    一百年前的数学界有两位泰斗: 庞加莱和希尔伯特, 而尤以后者更加 出名(在我的汉字系统下希尔伯特居然是一个词组),  我想主要原因是他曾经在1900年的世界数学家大会上提出了二十三个著名的希尔伯特问题 ...

  8. pfamscan 的使用_科学网—[转载]InterProScan的使用教程 - 黄顺谋的博文

    InterPro是一个数据库,其提供蛋白序列的功能分析并归纳为一个个蛋白家族,同时还预测了presence of domains和important sites.为了将蛋白分类,InterPro使用先 ...

  9. r语言算巢式设计方差分析_科学网—巢式设计之R篇 - 林元震的博文

    巢式设计(Nested design),也称为嵌套设计或系统分组设计.把研究对象分成若干组,每组内又分若干亚组,每个亚组又有若干观测值的设计,称为巢式设计.根据因素数的不同,巢式设计可分为二因素(二级 ...

最新文章

  1. Python源码学习:多线程实现机制
  2. docker 鱼龙混杂之基础操作篇
  3. 斯坦福抢开“元宇宙”第一课,上起来还真不便宜
  4. 女生学编程有哪些好处呢?
  5. DelphiXE7中创建WebService(服务端+客户端)
  6. python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
  7. maven 部署nexus_设置本地Nexus存储库并从Maven部署WAR文件
  8. ConcurrentLinkedQueue
  9. NoSQLBooster for MongoDB 中跨库关联查询
  10. FISCO BCOS 区块链 设置交易最晚处理区块高度
  11. 电子邮件如何追溯到他们的源IP地址
  12. 基于高德地图api的热力图配置及显示调优
  13. 计算机开关电源 原理与应用,开关电源原理与应用设计
  14. PDF解密工具—Cisdem PDF Password Remover
  15. RGB颜色值与十六进制颜色码转换及颜色码对照表
  16. 金仕达程序化交易平台初步设计
  17. 如果一个n位正整数等于它的n个数字的n次方和,则称该数为n位自方幂数。编程计算并输出所有的n的所有情况。
  18. c语言实例--打渔晒网问题
  19. 如何使windows系统环境变量的改变即时生效
  20. zotero配合坚果云和papership进行文献管理

热门文章

  1. 关于外部测试字段解释冲突
  2. C++中的struct与class继承方式
  3. ubuntu下vim与系统剪切板互相拷贝
  4. C# COM Object for Use In JavaScript / HTML, Including Event Handling(转载)
  5. 每天学一点flash(67) 上传图片
  6. ie下的firebug
  7. “软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
  8. 在Win10 LTSC 2019上安装和卸载linux子系统
  9. SonarQube安装步骤 Windows10系统
  10. chkconfig、mount、shutdown