面向对象程序设计具有:封装性,继承性,多态性。

1封装

封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如我们使用的电脑,电视,我们只需要会用即可,无需知道其内部是如何工作的,即使知道内部的工作原理,但我们在使用上并不完全依赖于其工作原理的细节。

我们采用封装的思想,是为了保证类内部数据结构的完整性,实用类的用户不能轻易的直接操作类的数据结构,只能执行类的公开数据。这样的好处是避免了外部操作对内部数据的影响,提高了程序的可维护性。

2继承

我们知道人与人之间可以有母子,父女等等一系列关系,那么类与类之间同样具有关系,这种关系被称为继承(两个类之间具有逻辑上的子父类关系)。使用这种继承思想可以缩短软件开发周期,复用那些已经定义好的类可以提高系统性能,减少系统在使用中的出现错误的概率。就像学生类可以继承人类一样,我们在创建学生类的时候可以拿人类 进行复用,并保留人类具有的属性和行为,学生类也应该有一些关于学习所具有的特有属性和特有行为。故学生类具有的东西,人类中可能就不具有(因为是在继承人类后的基础上根据自身特性后添加的),这样就可以节省定义人类和学生类共同具有的属性和行为时间,这就是继承的基本思想。

继承主要是利用特定对象之间的共同属性,如平行四边形和四边形。其中四边形可以为父类,平行四边形为子类,四边形所具有的平行四边形都具有,而平行四边形所具有的两边平行且相等的特性,四边形不一定不具有,故这样我们只需定义一个完整的四边形类,然后平行四边形类去继承它,并在自身类内添加特有属性,就完成了继承。

注意:Java中只支持单继承,和多层继承(son->father->grandpa)不支持多继承(子类有两个父类)

3多态

多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类及相关类。该统一风格可以由父类来实现,根据父类统一风格处理,可以实例化子类对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度,节省了时间。

多态的实现并不依赖于具体类,而是依赖于抽象类和接口。

我们以绘制图形类为例,绘制图形类作为所有绘制图形的父类,具有绘制图形的能力,但要执行这种能力,没有人知道应该画些什么(因为是绘制图形类,图形有千万种),所以使用抽象这个词来描述绘制图形类比较恰当。在Java语言中,称这样的类为抽象类,抽象类不可以实例化对象(因为不知道具体是什么东西,没法具体找到其对象)在多态的机制中父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体流程。实质上这个方法也是抽象的,如绘制图形类中的绘制方法只提供一个可以绘制图形的标准,并没有提供具体绘制图形的流程,因为没有人知道究竟需要绘制什么图形,当三角形需要绘制的时候,就可以继承绘制图形类,重写其中的绘制方法,并改写为绘制三角型。难道当我们需要绘制正方型,圆,每一次都需要实例化自己的子类吗?每一次都系要用子类的对象调用自己子类中的方法吗?当然不,那太麻烦了。故我们采用多态的思想,通过让向上转型,让父类能够调用子类的方法,故我们以后大多数只需调用父类即可,简化了程序的复杂性。

继承 封装 多态 (基础)描述性理解相关推荐

  1. java多态和继承_Java 继承与多态的深入理解

    Java 继承与多态的深入理解 1.  什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父 ...

  2. 在java面向对象编程中_谈一谈你对封装_继承_多态概念的理解_Java新职篇:面向对象编程的3个原则是什么?...

    原标题:Java新职篇:面向对象编程的3个原则是什么? 所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性.现在让我们来看一下它们的概念. 封装 封装(Encaps ...

  3. Java的三大特性之封装、继承、多态-----最简理解

    根据网上其他地方的解释,以及查找资料,将自己对java三大特性的理解展示如下. 封装:(属性私有,set/get,在set中限定一些不安全的情况) 封装是指把一个对象的状态信息(也就是属性)隐藏在对象 ...

  4. 面向对象的三大特征,封装、继承、多态的个人理解以及代码分析

    面向过程:我们以前使用的是面向过程编程,你需要清除每个实现步骤,每个步骤每行代码都要仔仔细细的编写, 不知道过程就找不到结果,找到实现过程就可以得到实现结果. 例如: 我们在外打工租房子,我们需要了解 ...

  5. 面向对象之三大特性:继承,封装,多态

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  6. java 继承 封装 多态 详解

    1.继承 1.1子类能够继承父类的哪些成员? 1.1.1 public 成员 1.1.2 protected 成员 1.1.3 同一个包中:缺省访问类型的成员 1.1.4 打死不能继承private成 ...

  7. JavaScript 继承 封装 多态实现及原理详解

    封装 就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 封装是面向对象的特征之一,是对象和类概念的主要特性. 简单的说,一个类就是一个封装了 ...

  8. 前端 JavaScript 设计模式前奏--面向对象-封装、继承、多态

    JavaScript 面向对象 如图所示: 1. 什么是面向对象 1. 面向对象的概念 2. 面向对象的三要素: 继承/封装/多态 ⭐️ 3. JS 的应用举例 4. 面相对象的意义 --- 数据结构 ...

  9. 本质论之封装继承和多态的介绍

    关于 类,我有一些话想说 说到类那就说到了面向对象的灵魂了,没有它也就没有了封装.继承and多态这些东西了.我还记得在读研期间每次看到这些都望而却步,甚至我搞不懂对象和类的区别(这里防止有人也不知道区 ...

最新文章

  1. weex css单位,weex 踩坑
  2. Android开发--Service和Activity通过广播传递消息
  3. QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)
  4. python - os模块
  5. 因子和,因子数,1到n的因子和,1到n的因子数(积性函数)
  6. html点击后按钮本身文字变化,javascript实现点击后变换按钮显示文字的方法
  7. Java8学习笔记(七)--Collectors
  8. linux无密码ssh,scp,rsync
  9. 转行HTML5前端开发,该怎么学才能最快入门
  10. 语义分割——语义分割数据集的笔记
  11. Servlet容器原型(三)——Tomcat 4默认连接器浅谈
  12. qmainwindow 标题栏_QMainWindow菜单栏和工具栏
  13. 栈增长方向与大端/小端问题
  14. ActiveMQ之Topic
  15. java executor_Java并发编程73道面试题及答案——面试稳了
  16. 快速入门丨篇八:如何进行运动控制器EtherCAT总线的基础使用?
  17. 牛客编程巅峰赛S1第12场 王者B-上上下下(DP)
  18. IE7IE8兼容性设置_服务器端设定
  19. c语言数字的写法田字格,数字100田字格怎么写
  20. 绿芯GreenChip电容式触控触摸IC型号性能介绍

热门文章

  1. 嵌入式Linux常用命令
  2. uniapp使用微信小程序自定义组件
  3. 使用python计算水仙花数
  4. 解决thinphp里返回json时斜杆和中文被转义问题
  5. tar -xzf和tar -cvf
  6. Android-自定义preference和PreferenceFragment实例详解
  7. fusionCharts属性集
  8. Kafka 开启 SASL/PLAINTEXT 认证及 ACL
  9. JasperReport:几个莫名其妙的问题的解决
  10. 2021消防设施操作员(中级)岗位考试真题安全检查知识部分