JAVA面向对象的三大特性

每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。下面是小编整理的关于JAVA面向对象的三大特性,希望大家认真阅读!

封装性

理解封装性概念

封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序(方法)和数据(属性)都不受外部干扰且不被误用。

理解封装性的一个方法就是把它想成一个黑匣子,它可以阻止在外部定义的代码随意访问内部代码和数据。对黑匣子内代码和数据的访问通过一个适当定义的接口严格控制。

如果想与现实生活中的某个事物作对比,可考虑汽车上的自动传送。自动传送中包含了有关引擎的数百比特的信息,例如你正在以什么样的加速度前进,你行驶路面的坡度如何,以及目前的档位。作为用户,你影响这个复杂封装的方法仅有一个:移动档位传动杆。例如,你不能通过使用拐弯信号或挡风玻璃擦拭器影响传动。所以档位传动杆是把你和传动连接起来的惟一接口。此外,传动对象内的任何操作都不会影响到外部对象,例如,档位传动装置不会打开车前灯!因为自动传动被封装起来了,所以任何一家汽车制造商都可以选择一种适合自己的方式来实现它。然而,从司机的观点来看,它们的用途都是一样的。与此相同的观点能被用于编程。封装代码的好处是每个人都知道怎么访问它,但却不必考虑它的内部实现细节,也不必害怕使用不当会带来负面影响。

java封装的对象

Java封装的基本单元是类。一个类定义了将被许多对象共享的属性和行为方法。这个类的每个对象都包含这个类定义的行为和属性,好像它们是从同一个类的模子中铸造出来似的。因为这个原因,对象被看作是类的实例,可以说类是实例对象的模板。所以,类是一种逻辑结构,而对象是真正存在的物理实体。

当创建一个类时,你要指定组成这个类的属性和方法。在用Java编写的程序中,方法定义如何使用成员变量。这意味着一个类的行为和接口是通过方法来定义的,类的这些方法对它的实例数据进行操作。

访问权限

封装:隐藏对象的属性和实现细节,仅对外公开接口。

(1)private(私有变量):只能被定义它的类访问。

(2)protected(受保护变量):可以被定义它的类及子孙类直接访问,也可以由同一包中的其他类直接访问。

(3)public(公共变量):可以被任何类进行访问。

(4)package:可以被定义它的类和同一个包中的其他类(包括派生子类)所访问.(包变量在声明时常常省略package关键字),在其他包中的子类则不能访问父类的包变量

既然类的目的是封装复杂性,在类的内部就应该有隐藏实现复杂性机制。类中的每个方法或变量都可以被标记为私有(private)或公共(public)。类的公共接口代表类的外部用户需要知道或可以知道的每件事情;私有方法和数据仅能被一个类的成员代码所访问,其他任何不是类的成员的代码都不能访问私有的方法或变量。既然类的私有成员仅能被程序中的其他部分通过该类的公共方法访问,那么你就能保证不希望发生的事情就一定不会发生。

继承性

理解继承性概念

继承是一个对象获得另一个对象的属性的过程。

继承很重要,因为它支持了按层分类的概念。例如,尊贵的猎犬是狗类的一部分,狗又是哺乳动物类的一部分,哺乳动物类又是动物类的一部分。如果不使用层级的概念,我们就不得不分别定义每个动物的所有属性。使用了继承,一个对象就只需定义使它在所属类中独一无二的属性即可,因为它可以从它的父类那儿继承所有的通用属性。所以,可以这样说,正是继承机制使一个对象成为一个更具通用类的一个特定实例成为可能。下面让我们更具体地讨论这个过程。

一个深度继承的子类继承了类层级中它的每个祖先的所有属性。继承性与封装性相互作用。如果一个给定的类封装了一些属性,那么它的任何子类将具有同样的属性,而且还添加了子类自己特有的属性。新的子类继承它的所有祖先的所有属性。

(1)复用其他对象的代码有两种方法:

①. 继承:是由子对象完全继承父对象的数据和操作,”is”的关系。

②. 包含:把一个对象作为另外一个对象的一部分,从而达到复用的目的,”has”的关系。

(2)继承的理解:

①. 继承是类实现可重用性和可扩充性的关键特征,在继承关系下类之间组成网状的层次结构。

②. 继承避免公用代码的重复开发,减少代码的冗余。

③. 通过继承增强一致性,从而减少模块间的接口和界面

(3)单继承(Java支持):

子类只能有一个直接父类,多继承(Java不支持):子类可以有多个直接父类。

Java不支持类的多继承,但支持接口的多继承。继承通过关键字extends实现。

(4)变量隐藏:

在子类对父类的继承中,如果子类与父类的成员变量同名,此时成为子类隐藏(override)了父类的成员变量。子类若要引用父类的同名变量,要用super关键字做前缀加圆点操作符引用,即“super.变量名”。

(5)方法覆盖:

在子类中重写父类的方法,它们的名称,参数以及返回类型完全相同。通过改写方法体来完成不同的功能。注意子类方法不能缩小父类方法的访问权限 。

(6)super关键字:

如果子类调用父类的构造函数,则通过super()调用来实现。如果子类调用父类的同名方法,则通过super.方法名()来实现。

(7)this关键字:

java面向对象三大特性难吗_JAVA面向对象的三大特性相关推荐

  1. 对java面向对象的三大特征的理解_Java面向对象的三大特征是什么?

    面向对象的三大核心特性简介 面向对象开发模式更有利于人们开拓思维,在具体的开发过程中便于程序的划分,方便程序员分工合作,提高开发效率. 该开发模式之所以使程序设计更加完善和强大,主要是因为面向对象具有 ...

  2. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

  3. Java怎么用继承回复信息_JAVA面向对象-继承

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java继承: 1.继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个对象获取属性的过程. 2.如果类 ...

  4. java里面比较重要的东西_Java面向对象程序设计中很重要的一些东西

    面向对象具有多方面的吸引力.对于管理人员,它实现了更快和更廉价的开发与维护过程.对于分析与设计人员,能生成清晰.易于维护的设计方案.对于程序开发人员,对象的理解又是如此浅显.此外,面向对象的工具以及类 ...

  5. java面向对象程序设计董小园_java面向对象程序设计(董小园版).doc

    目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc238553494" 第1章了解Java PAGEREF _Toc238 ...

  6. java中object类怎么赋值_Java面向对象之Object类

    一.继承体系的老祖宗是Object类.(Object类是所有类的父类) 当我们不希望在程序中某些类被继承,某些方法被重写,某些数据被修订.就是final关键字闪亮登场的时候了. 一个类没有使用exte ...

  7. java面向对象第四章上机_java面向对象第四章

    一.接口的基础知识 1.为什么需要接口 为解决实际应用中,单一继承无法解决的问题 2.什么是接口 a)   基本概念? 接口是一种特殊的抽象类 接口是一种规范和标准,可以约束类的行为,是一些方法特征集 ...

  8. java对象赋值给另一个对象_java面向对象编程

    对象,从字面意思来看就是我们面对的物象.由此便可以知道,万事万物皆为对象.比如:一台电脑,一辆汽车,一部手机等等都是对象. 比如我们想要买一部手机,我们想要内存大一点的,最新款的,CPU 运算快一点的 ...

  9. java页面间面向对象的方法面试题_JAVA面向对象面试题带答案(墙裂推荐)

    1) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用(c)关键字来申明父类的这些方法. a) Finalc b) Static c) Abstract d) Void ...

最新文章

  1. 前景检测算法_4(opencv自带GMM)
  2. epoll示例(水平触发)
  3. 如何将浮点型准确地转换成字符串
  4. git基本概念与核心命令_Git:了解核心版本控制概念的初学者指南
  5. 【葫芦娃团队】无人转会申请
  6. 当BeanUtils遇到泛型
  7. 金阳光测试算法专题——精选小算法汇总
  8. 绿联网卡转接mac设置_苹果中文系统USB外置网卡驱动安装方法
  9. SATA OOB CTS测试项解析
  10. 微软云游戏服务器,微软:云游戏服务Project xCloud将扩展游戏服务的数量和地区...
  11. wince 之临时宏控制 bib 和 reg
  12. 【深度好文】Python图像处理之物体标识与面积测量
  13. 通过Nginx反向代理实现IP访问分流
  14. 本科生毕业设计选题——计算机类
  15. python获取登录按钮_用Python实现一个最新QQ办公版(TIM)的登录界面
  16. element 解决 Error: target is not existed: .page-component__scroll .el-scrollbar__wrap
  17. GUVC-T10GD-L185 臭氧灯监控172nm和185nm紫外线灯监测高可靠性光电二极管杀菌灯监控
  18. 水滴筹-商业模式画布
  19. python程序打包为exe,并压缩体积最小!
  20. 行业分析| 新的学习方式——在线自习室

热门文章

  1. java url解码解不了_java – 为什么URL没有完全解码?
  2. nnUNet原创团队全新力作!MedNeXt:医学图像分割新SOTA
  3. DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
  4. python打字_使用Python制作一个打字训练小工具
  5. NPOI导出word,NPOI导出word表格,NPOI复制table表格 XWPFDocument中XWPFTable
  6. 解救IP被封的服务器
  7. Chrome插件:云音乐听歌识曲
  8. 5G已开始商用 目前提供5G商用服务的国家有哪些
  9. 图片怎么缩小尺寸比例不变?
  10. Java实现JWS生成与验签