对封装、继承、多态、抽象的理解
封装
封装是面向对象的重要原则,就是把对象的属性和行为(方法)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。大白话讲就是,把不想告诉或者不该告诉别人的东西隐藏起来(private关键字修饰),把可以告诉别人的东西公开,别人只能用我提供的功能实现需求,而不知道内部是如何实现的。正是由于这种特性,所以起到了增加安全性的作用。
继承
继承是面向对象最显著的一个特性,是从已有的类中派生出新的类,我们把它称之为子类,子类继承父类的属性和行为,并能根据自己的需求扩展出新的属性和行为,提高了代码的可复用性。
eg : 运动Sport,球类运动BallSport继承Sport,羽毛球Badminton继承BallSport。
多态
多态指允许不同的对象对同一个消息做出相应,即同一个消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。封装和继承几乎都是为多态而准备的,在执行期间判断引用对象的实际类型从而调用其相应的方法。
eg : 球类运动都会有play()打球这个行为(方法),但是这个方法是抽象的(没有具体的实现),子类中的羽毛球实现是用羽毛球拍去打的,而足球是用脚去踢的,篮球是用手去投的。
抽象
抽象表示对问题领域进行分析、设计中得出的抽象的概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。在Java中抽象用 abstract 关键字来修饰,用 abstract 修饰类时,此类就不能被实例化,从这里可以看出,抽象类(接口)就是为了继承而存在的。
eg : 还是多态中的例子,球类运动作为父类定义一个抽象方法play(),然后让继承它的子类具体实现该方法。
对封装、继承、多态、抽象的理解相关推荐
- 对封装继承多态内涵的理解
封装:隔离,完备性,可替代,可移植,易于理解,可操作. 继承:复用,适应性. 多态:实现的多样性.
- 面向对象的四大特征 封装 继承 多态 抽象
1.封装 广义: 类 方法 包 的定义本身就是一种封装 狭义: 在设计一个类的时候 将所有的属性设置为私有的 并对各个私有的属性设计相应的 存/取方法 来完成对属性的使用 私有化只能代表封装的特性 可 ...
- c语言编程 菲薄拉,C语言设计模式-封装-继承-多态
快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...
- 小白理解——封装继承多态
一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...
- Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态
Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...
- python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...
- 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)
面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...
- 面向对象 编程及面向对象三大属性:封装 继承 多态
面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...
- python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...
- 白话文带你了解 封装 继承 多态
这里讲的仅仅是带你理解 封装 继承 多态 染好您可以移步去别的文章学习具体的实现 (只是个人理解 您可以不爱,请别伤害哦!) 首先你要知道 java是面向对象的,说白了就是我拿你当个人,请认清你的地位 ...
最新文章
- Emmet语法(快速生成HTML结构语法、快速生成CSS样式语法)
- 2018年4月份,阿里最新的java程序员面试题目
- 手把手教你实现一个 AdaBoost
- mt65xx android phone win10驱动,mt65xx android phone驱动下载
- 武汉轻工大学计算机学院操作系统复试题目,2016年武汉轻工大学数学与计算机学院计算机组成原理复试考研复试题库...
- python plt.show_如何使用Python最大化plt.show()窗口
- 现实版“奇异博士”?原来是这款神秘的“数学黑盒”
- C/C++ atof函数 - C语言零基础入门教程
- java引用数据类型可以更改类型_Java改变引用数据类型的值
- 实战生产环境vCenter HA配置(VCSA6.5)
- GCD使用经验与技巧浅谈
- [2019杭电多校第十场][hdu6701]Make Rounddog Happy
- Ubuntu解决包依赖关系
- rs232 linux驱动程序,rs232驱动,USB-RS232驱动程序安装说明
- Fall 2020 Berkeley cs61a Projects cats答案
- android指纹识别开发
- 【拆解】便携示波器怎么选?
- bme java_为什么bme280.startreadout()只触发一次?
- 我的口号:我是金鳞,我敢评!
- HTML+CSS案例京东静态界面
热门文章
- correl函数_CORREL函数用法讲解
- Ajax传递数组对象
- ajax传递数组怎么办?
- XManager5 ssh远程登录服务器工具xshell ,服务器资源上传下载工具xftp
- PC微信3.7.0将本地文件从MsgAttach文件夹转移回原先的File文件夹
- 【性能测试】轻量级性能测试工具Hey
- Win2012 R2 安装Exchange Server2016
- CRC校验中的“模2”除法运算流程图和图示
- 软件架构设计与需求分析方法论
- Ubuntu开发环境_TLP电源管理模块、禁用笔记本触摸板