1、什么是面向对象编程

  • 面向对象程序设计OOP是一种计算机编程架构。OOP的一条基本原理是计算机程序由单个能够起到子程序作用的单元或者对象组合而成。
  • 面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类世界、解决现实问题的方法和过程,也即使得描述问题的问题空间内与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。
  • 面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对对象的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

2、面向对象编程的特点

1)封装

  • 封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作语言(即描述每一个对象的属性以及其行为的程序代码)组装到一起,一起封装在一个有机的实体中,把他们封装在一个“模块”中,也就是一个类中,为软件结构的相关部件所具有的模块提供良好的基础。
  • 在面向对象技术的相关原理以及程序语言中,封装的最基本单位是对象,而使得软件结构的相关部件的实现“高内聚,低耦合”的最佳状态便是 面向对象技术的封装性所需要的最基本的目标。
  • 对于用户来说,对象是如何对各种行为进行操作、运行、实现等细节是不需要刨根问底清楚了解的,用户只需要通过封装外的通道对计算机进行相关方便的操作即可。大大简化了操作的步骤,使用户使用起计算机来更加高效、更加得心应手。

2)继承

  • 继承性是面向对象技术中的另外一个中药特点,其主要指的是两种或者两种以上的类之间的联系与区别。
  • 继承,顾名思义,是后者延续前者的某些方面的特点,而在面向对象技术则是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。
  • 如果按照继承源进行划分,则可以分为单继承与多继承。
    • 单继承:一个对象仅仅从另外一个对象中继承其相应的特点。
    • 多继承:一个对象可以同时从另外两个或者两个以上的对象中继承所需要的特点与能力,并且不会发生冲突等现象。
  • 如果从继承中包含的内容进行划分,则继承可以分为四类,分别为取代继承、包含继承、受限继承和特化继承。
    • 取代继承:一个对象在继承另外一个对象的能力与特点之后将副对象进行取代。
    • 包含继承:一个对象在将另一个对象的能力与特点进行完全的继承之后,又继承了其他对象所包含的相应内容,结果导致这个对象所具有的能力与特点大于父对象,实现了对于父对象的包含

3)多态

  • 从宏观的角度来讲,多态性是指在面向对象技术中,当不同的多个对象同时收到同一个完全相同的消息之后所表现出来的动作是各不相同的,具有多态性。
  • 从微观的角度来讲,多态性是指在一组对象的一个类中,面向对象技术可以使用相同的调用方式来对相同的函数名进行调用,几十这若干个具有相同函数名的函数所表示的函数是不同的。

3、举个栗子

通过Java代码,看一下封装:

public class Test{// 向前一步走拆分:
//  1、抬起左脚
//  2、向前迈出一步
//  3、落脚
//  4、右脚向前一步// 把向前走一步的动作封装成一个方法,调用者不用考虑方法内部实现细节public static void zou() {System.out.println("抬起左脚");System.out.println("向前迈出一步");System.out.println("落脚");System.out.println("右脚向前一步");}public static void main(String[] args)   {// 模拟面向过程System.out.println("抬起左脚");System.out.println("向前迈出一步");System.out.println("落脚");System.out.println("右脚向前一步");// 直接通过名字调用zou();}
}

继承

class father {public void say() {System.out.println("我是父类的say方法");}
}public class son extends father{public static void main(String[] args) {son s = new son();s.say();}
}//输出:我是父类的say方法

多态

public class 多态 {private static void say() {System.out.println("我说了null");}private static void say(String str) {System.out.println("我说了" + str);        }public static void main(String[] args) {say();say("你好呀"); // 会根据相应的方法参数去寻找相应的参数}
}// 我说了null
// 我说了你好呀

参考原文

面向对象程序设计的特点相关推荐

  1. php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例

    本文实例讲述了PHP面向对象程序设计类的定义与用法.分享给大家供大家参考,具体如下: class Person { private $name; private $sex; private $age; ...

  2. 常惠琢 201771010102《面向对象程序设计(java)》第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法 ...

  3. 2017《面向对象程序设计》寒假作业一

    1.你有什么技能比大多人(超过70%以上)更好? 我看电影比一般人多一点点:我听英文歌比一般人多一点点:我有一把尤克里里和一个滑板.我有很多爱好,但都没能发展成我的特长,它们给我的生活增添了情趣,又不 ...

  4. java面向对象电子科大版答案_电子科大17秋《面向对象程序设计》在线作业1

    电子科大17秋<面向对象程序设计>在线作业1 ----------------------------------------------------------------------- ...

  5. 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告

    20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...

  6. JavaScript中的面向对象程序设计

    本文内容目录顺序: 1.Object概念讲述: 2.面向对象程序设计特点: 3.JavaScript中类和实例对象的创建: 4.原型概念: 5.原型API: 6.原型对象的具体使用:7.深入理解使用原 ...

  7. [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)...

    [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(二) 利用多线程提高程序性能(下) 本节导读: 上节说了线程同步中使用线程锁和线程通知的方式来处理资源共享问题,这 ...

  8. 面向对象程序设计上机练习一(函数重载)

    面向对象程序设计上机练习一(函数重载) Time Limit: 1000MS Memory Limit: 65536KB Problem Description 利用数组和函数重载求5个数最大值(分别 ...

  9. 面向对象程序设计作业 6.1~6.4

    面向对象程序设计作业 6.1-6.4 面对对象基础题三道.继承多态一道. #include <iostream> #include <string> #include < ...

  10. java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

    很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间.现在小编带大家重新过一遍知 ...

最新文章

  1. 1数字图像获取:1.1图像数字化
  2. Linux下安装Redis数据库
  3. php 自动列,设置自动调整列phpExcel
  4. 安装mysql8.0.11版本,并使用mybatis进行连接mysql遇到的问题
  5. python的列表和元组
  6. 2003年以来网页尺寸增长3倍
  7. 工作经验教训_在设计工作五年后获得的经验教训
  8. python基础ppt_Python基础课件.ppt
  9. JavaScript数组操作 [Z]
  10. pop3方式接收不了邮件原因
  11. 利用NMDS对药物处理下肠道菌群微生物群落多态性分析
  12. 三步骤详解张正友标定法
  13. 【MySQL数据库设计与应用(四)】视图
  14. 100部最佳美国影片
  15. 生物特征识别技术领跑者--墨奇科技 全面亮相2022身份识别技术大会
  16. 1003: 两个整数的四则运算 Python
  17. 选字验证码破解思路:CTPN - 自然场景文本检测
  18. matplotlib之plot()详解
  19. VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  20. 证件照制作教程:如何使用在线工具制作高质量的证件照

热门文章

  1. 一个CUE文件解析类
  2. ZXing3.3.3 简单的使用(生成二维码)
  3. MyBatis框架的作用
  4. 群体智能优化算法之鲸鱼优化算法(Whale Optimization Algorithm,WOA)
  5. NB-IOT的数据传输流程和双工模式
  6. 密信电子签名服务启用新域名、新品牌、新产品和新网站
  7. Qt学习:文件介绍+对象树+信号和槽
  8. 程序员转变草根站长后,做了网站后如何快速提高百度网站收录和流量
  9. 深入了解现代网络浏览器(第 1 部分)
  10. 将一台mackbook的备忘录全部导到另一台mackbook上