面向对象编程(OOP)思想小结
Concepts
- 类(class):对我们要解决问题的抽象,比如建造房子的蓝图;但实现机制上来讲,类是根据蓝图构建而成的,存储在内存中的,用来表示对象的数据。
- 对象(object):根据类构建的实体,比如根据蓝图造出来的房子;实现时,通常是复制类的数据到新的内存空间,有可能需要改变初始值。
- 实例(instance):对象的名字。指向对象在内存中存储地址的引用(reference)变量。也就是说,实例只是某个对象的别名(alias),给某个对象创建新的实例,并不会开辟新的内存空间存放一个新的对象。
4 Pillars
Encapsulation
将相关的变量和函数通过某种架构组合到一起,构成对象的类;此时该类的变量被称为属性(Property),函数被称为方法(Method)。
这样相当于将面向过程中的变量和函数做了分类,一个类中的变量可以随时被该类中的方法使用,并且不用作为函数参数来传递。因为越多的参数会使函数越难以使用,移植和维护。
Abstraction
隐藏对象内部的属性和方法。
优点:
- 简化接口设计:对外暴露的方法少,接口设计越简单;
- 减少代码变化的影响:更新模块内部私有属性和方法的代码,不会影响到模块外部适配的兼容性。
Inheritance
引入树的层级概念。从树的根节点往下,对象越来越具体。子节点上的对象比父节点的对象更具体,是其父节点的子集,可以在父节点对象的基础上,拥有更多针对子节点对象的方法和属性。
这种设计方法,可以减少代码冗余(redundancy),减少不一致性(inconsistency),降低代码的维护难度。
Polymorphism
用希腊词根解释,“poly” 意思是许多(many),“morph” 意为形式(form)。一句话解释就是针对不同的数据形式提供同样的程序接口。
例如,动物可以移动自己的位置,人可以走,狗可以爬,蛇可以爬,同时车也可以移动位置。虽然可以这样的动作都可以定义为 move() ,但他们的移动方式都不一样。
animal.move(x,y)
human.move(x,y)
dog.move(x,y)
snake.move(x,y)
car.move(x,y)
这种把不同类的方法按照其共性来统一命名,我们称之为 “Polymorphism”,中文译为多态。
优点:
- 统一方法命名
- 简化接口设计
Written with StackEdit.
面向对象编程(OOP)思想小结的更多相关文章
- JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...
- 面向过程编程(OPP) 和面向对象编程(OOP)的关系
面向过程编程(OPP) 和面向对象编程(OOP)的关系 原文链接:http://blog.csdn.net/phphot/article/details/3985480 关于面向过程的编程(OPP)和 ...
- 2016/1/17 笔记 1,面向对象编程OOP 2,类 全
面向对象编程OOP 编程方式的发展 1,面向过程 重用性低 维护工作量大 2,面向对象 重用性高 维护容易 概念 1,对象 Object 一个具体的事物 是类的实例 2,类Class 同一 ...
- [JAVA] 面向对象编程OOP Note
面向对象编程OOP Note OOP五个基本特性1. 万物皆对象.2. 程序是对象的集合,它们通过发送消息来告知彼此所要做的.3. 每个对象都有自己的由其他对象所构成的存储.4. 每个对象都拥有其类型 ...
- 学习面向对象编程OOP 第一天
面向对象编程 Object Oriented Programming 一.什么是面向对象编程OOP 1.计算机编程架构; 2.计算机程序是由一个能够起到子程序作用的单元或者对象组合而成.也就是说由多个 ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则
注:以下图片均来自<如何向妻子解释OOD>译文链接:http://www.cnblogs.com/niyw/archive/2011/01/25/1940603.html < ...
- 【软件构造】第三章第四节 面向对象编程OOP
第三章第四节 面向对象编程OOP 本节讲学习ADT的具体实现技术:OOP Outline OOP的基本概念 对象 类 接口 抽象类 OOP的不同特征 封装 继承与重写(override) 多态与重载( ...
- php面向对象编程(oop)基础知识示例解释
面向对象并不是一种技术,而是一种思想,是一种解决问题的最基本的思维方式!如何理解使用?OOP:面向对象编程 (直接代码说明) 1.面向对象的基本概念 示例demo: <?php header(& ...
随机推荐
- java点滴之MulticastSocket的使用
一基本概念 该类恰是上文介绍的DatagramSocket的子类. DatagramSocket仅仅同意数据报发送给指定的目标地址,而MulticastSocket能够将数据报以广播的方式发送到多个c ...
- web前端开发从0到1—html结构与常用标签
一:html文档标签结构 <html></html><!--文档片头信息,表示文档内容是用什么标签写的.--> <head></head>& ...
- Linux-- 文件编辑器 vi/vim(2)
多文件编辑 vi 可以用来打开多个文件,如下: 进入编辑界面以后,输入 :n 可以切换到下一个文本,:N 可以切换到上一个文本,:files 列出目前这个 vi 打开的所有文件,举例如下: 切换到下一 ...
- org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping 原因:yml文件格式错误,此文件要求严格要求格式 如节 ...
- Android Studio 2.3.3 出现Error:(26.13) Fail to resole: com.android.support.appcompat永久解决方法
Android Studio 出现Error(26.13):Fail to resole:com.android.support.appcompat-v7.28_ Install Repository ...
- js节点操作实例
写了一个简单的小例子来引用js实例 1. 初步节点操作: 2.兼容性节点操作: 3.节点的类型,名字: 4.使用setAttribute设置属性 5.节点复制操作: 6.删除和替换节点 如有错误,还望 ...
- work notes
本喵,一个快乐的web开发肥宅程序媛,参与过手机端.电视TV端.电脑端的开发.工作之余,总结了一些经验[避坑指南]分享给大家- 1. webView内嵌h5页面时,如果内嵌的页面有出现手机自带键盘或者 ...
- 搭建php服务器网站
一.Apache安装 yum install httpd启动systemctl start httpd.service #启动systemctl stop httpd.service #停止syste ...
- Python - 入门基础(一)
1.解释器路径 #!/usr/bin/env python 2.编码 # -*- coding:utf8 -*- 1.ascill ---00000000 (8个位表示) 缺点:表示不了英文 2.u ...
- 【Keil】Keil5-改变字的大小和颜色
点击 Edit / Configuration 出现弹窗,选择Colors & Fonts 底下可以选择要改哪个部分,例如普通代码.数字.关键字.注释...等等,当然也可以改变背景颜色的,英文 ...