初学面向对象编程会遇到封装、继承与多态这三个核心概念,下面来说一下个人对于这三个概念的理解。

1、什么是封装,为什么要用到封装?

抛开抽象概念来讲,封装就是将一些复杂的或是不想让你看到的事物包装起来,叫做封装。从程序的角度来说就是,把一些内部复杂的逻辑或是不想让其他人员修改程序内部进而把部分程序包装起来,叫做封装。举一个 遥控器的例子,无论是电动玩具赛车遥控器还是电视遥控器,其内部都是复杂的电路板,由于技术人员出于对电路板的保护的角度来说或是不想其他人员看到内部丑陋的电路板的角度来说,通过手柄来包装都能达到这俩种效果。

2、什么是继承?为什么要用到继承?

继承,顾名思义,就是继承某个东西或者财产。比如,子代继承父代的财产,一个人继承他爸爸财产房产一类的东西,但是有些东西是不能继承的,比如这个人他爸爸年轻时学到的知识、经历,他不能继承(程序中的私有字段等)。从程序的角度来说,就是子类继承父类的一下字段属性方法等。那为什么要用到继承的? 一切工具以及方法都是为了解决问题而发明创造的。继承也不例外。起初还没有面向对象思想的语言产生时,利用古老的语言或者C语言编程时,当发现一块需求的功能与之前一块已经写过代码实现的功能类似,这怎么办?一般都是粘贴代码,但是慢慢的人们发现,这种办法当代码数量很多时候极有可能少粘贴或是粘贴多了引发不必要的错误。由此,人们想了一种方法叫做继承。

3、什么是多态?为什么要用到多态?

多态,即多种状态。首先说一下为什么要使用多态,是为了解决代码的灵活性这个问题,为了写出通用的代码使得程序更加好维护便捷。譬如,我有好多台打印机,有各种型号的,可以打印黑白的、彩色的和更多彩色的。我想只通过一个按钮(方法)就让这各种型号的打印同时打印。不需要再去每个打印机按一下各自的按钮,若是这样不得累死我,假设有几百台打印机的话。所以这时候就需要多态,通过将子类引用赋给父类对象,通过循环列表 就可以用同一种方法去调用不同的打印机,多方便!

浅谈 什么是封装、继承与多态?相关推荐

  1. java中的多态与继承_【Java学习笔记之十六】浅谈Java中的继承与多态

    1.  什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类更具体.父类具有更 ...

  2. 浅谈js的常用继承封装和多态

    好久没有写博客了,以前对js的继承都很模糊,最近重新整理了些资料重新温习了一下! 首先什么是构造函数?什么是原型?什么是实例化对像?,继承和实例化对象有什么区别?继承方式有哪些?各自有什么区别和优缺点 ...

  3. java 继承重写_java 封装 继承 重写 多态

    封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: 将变化隔离.便于使用.提高重用性.提高安全性 封装原则: 将不需要对外提供的内容都隐藏起来.把属性都隐藏,提供公共方法对其访问. ...

  4. 面向对象 详解笔记 方法 类 对象 封装 继承 重写 多态 接口

    文章目录 面向过程&面向对象 面向过程 面向对象 什么是面向对象 回顾方法及加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范就o ...

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

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

  6. 黑马程序员_JAVA之面向对象(封装,继承和多态)

    ------- android培训.java培训.期待与您交流!---------- 面向对象 一.面向对象概述 定义: 面向对象(Object Oriented,OO)是软件开过过程中使用一种思维方 ...

  7. Java回顾 封装 继承和多态

    封装 什么是封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装时的权限控制符区别如下: 封装的意义 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象 ...

  8. java 封装 继承和多态

    2019独角兽企业重金招聘Python工程师标准>>> 多态无处不在.引用的概念最为困难.理解了引用才能理解多态的意义以及应用. 多态的应用的一大前提是继承.以及继承中的重写方法.继 ...

  9. 市场定位和硬件设计的错误-浅谈GM8126的封装

    注:以下仅为个人观点,仅供私人参考,他人不喜勿喷. GM8126,是台湾升迈(智原)的一个视频处理芯片,主要定位于DVR/IP CAMERA等市场. 笔者对GM8126的第一个印象是--QFP封装,这 ...

最新文章

  1. 如何创建一个最小的区块链
  2. python中import cv2遇到的错误及安装方法_独家利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码amp;解析)...
  3. mysql主从skip1677_解决字符集不同引起的主从同步异常1677报错问题
  4. oracle sysauth,sysauth$基表的用户权限的一点分析
  5. PHP加密解密函数之Crypt
  6. MATLAB生成数组
  7. for循环中的setTimeout()
  8. UOS家庭版(21.2)安装SecureCRT(scrt-9.1.1-2638.ubuntu20-64.x86_64.deb)无法运行问题
  9. 云桌面优缺点_云桌面真的是办公最佳选择吗?云桌面的优缺点对比
  10. 文章标题怎么伪原创?火车头标题伪原创插件
  11. 秒搜神器everything背后的索引原理
  12. 洛谷 P1957 口算练习题 题解 字符串 C/C++
  13. 数据结构 队列的结构特点及基本操作
  14. 很多人说单片机很简单。但本专业学生都认为单片机是最难学的课程。为什么学起来都这么吃力呢?
  15. MacTex字体缺失 Error: The font “TeX Gyre Termes Math“ cannot be found.
  16. word学习-清除格式+清除链接
  17. 访问者模式 Visitor
  18. 大数据知识框架体系总结梳理
  19. commander.js使用及源码分析
  20. 【渝粤题库】广东开放大学 文化创意学 形成性考核 (2)

热门文章

  1. 程序员别再迷茫,赚钱,方法比你想的更多
  2. 贾扬清、李沐、陈天奇:如何看待国内开源现状?
  3. 学习笔记,C,n+nn+nnn+nnnn+nnnnn
  4. Android:线性布局介绍,线性布局weight属性,线性布局微调参数gravity,线性布局divider
  5. sanp 7 1200plc通信
  6. python中str类型和object类型_pandas str和object类型之间的区别
  7. 制造业ERP管理系统在企业管理中发挥什么作用?
  8. vim 匹配行首到某个特定字符
  9. ESP8266进阶篇
  10. Android开发——如何设计开发一款Android App