自从开始接触java,就有人告诉我说,java是面向对象的编程语言。最多就是new一个对象,但是并不知道对象是什么。我以为对象就是一个class类,没有什么特别的。但开始找工作的时候,面试的人问了一个问题,什么是OOP,我当时一蒙,oop是啥,突然想到,oop不是面向对象编程吗?难道这个问题的答案就是一句话,我觉得没有那么简单,所以回来自己找了一些资料,整理的如下:

      什么是OOPObject Oriented Programming,解释就是面向对象的编程,还有OOD---面向对象的设计,OOA----面向对象的分析等。什么是面向对象?想要了解这个问题需要了解面向过程,这样就比较好理解:下面是我在一篇博客中看的一个比较好的例子,借鉴一下:

其实很早以前的编程是面向过程的,就比如实现一个算术运算1+1 = 2,通过这个简单的算法就可以解决问题。但是随着时代的进步,人们不满足现有的算法了,因为问题越来越复杂,不是1+1那么单纯了,比如一个班级的学生的数据分析,这样就有了对象这个概念,一切事物皆对象。将现实的事物抽象出来,注意抽象这个词是重点啊,把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。这是一次飞跃性的进步。

举个简单的例子来区分----面向过程和面向对象

如果有一天你想要是吃番茄炒鸡蛋,怎么办呢?你有两个选择

1. 自己去买材料,鸡蛋、盐、番茄、葱等等然后切菜、打蛋等,放在盘子里,然后炒。

2. 去饭店,直接说,老板,来一份番茄炒蛋!

看出来区别了吗,1就是面向过程,2就是面向对象。

面向对象有什么优势呢?首先你不需要知道番茄炒蛋是怎么做的,这就降低了耦合性。如果你突然不想吃番茄炒蛋了,想吃小青菜,对于1你可能不容易了,你还需要重新买食材、调料等。但是对于2,很容易,直接说,老板,那个番茄炒蛋换成小青菜吧,这就提高了可维护性。总的来说,面向对象就是降低耦合,提高可维护性!

面向过程是具体化的,流程化的解决一个问题,需要一步一步的分析,一步一步的实现。

面向对象是模型化的,你只需要抽象出一个类,这就是一个封闭的盒子,这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就好了,不需要一步一步的实现,至于这个功能是如何实现的,不需要关心,只要会用就可以了。

面向对象的底层是面向过程,把面向对象过程抽象成类,然后封装,方便使用的就是面向对象。

面向过程

优点:性能比面向对象好,因为类调用时不需要实例化,开销比较大,比较耗资源。

缺点:不易维护、不易服用、不易扩展。

面向对象

优点:易维护、易服用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活,更加易于维护。

缺点:性能比面向过程差。

面向对象的三大特性和五大原则:

面向对象的三大特性:

1. 封装

隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用并且提高复用性和安全性。

2. 继承

提高代码的复用性,继承是多态的前提。

3. 多态

父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的可扩展性。

五大基本原则:

1. 单一职责原则SRP(Single Responsibility Principle)

类的功能要单一,不能保罗万象,跟杂货铺一样。

2.开放封闭原则OCP(Open-Close Principle)

一个模块对于扩展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改一万个不乐意。

3.里式替换原则LSP(the Liskov Substitution Principle LSP)

子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你爷爷加干活,

【Java】面向对象是什么相关推荐

  1. java面向对象-------静态初始化块

    1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...

  2. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...

  3. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  4. 12 Java面向对象之多态

    JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...

  5. 猫抓老鼠-Java面向对象特点梳理

    我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...

  6. java面向对象特征及阐述,Java面向对象四个特征

    Java面向对象有四个特征:抽象.封装.继承.多态.其中封装.继承.多态又被称为Java的基本特征. 抽象: Java中会把客观事物抽象成一个类.类就是封装了数据以及操作这些数据的代码逻辑实体.用字符 ...

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

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

  8. 第7篇-JAVA面向对象Ⅲ

    第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.J ...

  9. 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象

    计算机语言晦涩难懂,打算利用通俗易懂的文字带领大家学习java基础.如果文中有什么错误的地方,欢迎大家在评论区指正,免得我误人子弟. Question:当面试JAVA开发岗位的时候,面试官最爱问的问题 ...

  10. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

最新文章

  1. 15:解决IntelliJ IDEA的乱码问题
  2. 支付宝应用的架构到底有多牛?
  3. 全国信息化计算机应用技术水平教育考试,全国信息化计算机应用技术水平教育考试试卷.doc...
  4. 别名的应用(New-Alias)
  5. OpenCV:OpenCV4.0更新
  6. html个人博客完整代码_hexo | 不用写代码,2小时快速搭建个人博客
  7. android消息机制 Message, Looper,Handler
  8. Spotlight on MySQL
  9. 27_多线程_第27天(线程安全、线程同步、等待唤醒机制、单例设计模式)
  10. 学习SpringBoot(1)入门及简单的配置
  11. 【学习记录贴】#3——校园二维和三维电子地图制作
  12. 什么软件能测试太阳光照周期,你做的是UV测试,还是太阳光照测试?
  13. ORB-SLAM2安装以及遇到问题
  14. 聊聊Excel的大批量导入导出
  15. Android下使用W25Q32
  16. # 会员注册与登录模块
  17. Google hacking用法
  18. 第10章第10节:使用iSlide的幻灯片诊断工具优化幻灯片中的图片 [PowerPoint精美幻灯片实战教程]
  19. python 3 日历模块
  20. Java集合详解4:HashMap和HashTable

热门文章

  1. 2020年4月中国编程语言排行榜程序员工资统计,人工智能工资大跌
  2. Linux安装包下载地址(国内)
  3. 一篇 vSAN 入门,送给大家
  4. Exchange Reporter Plus概述
  5. tidb使用坑记录TiDB和Mysql的sql差异总结
  6. Java基础学习总结(180)——如何保证API接口安全
  7. Nginx学习总结(14)——Nginx配置参数详细说明与整理
  8. Docker学习总结(42)——Docker Compose 入门学习
  9. php修改linux文件权限设置,linux怎么给文件设置权限
  10. linux--vi的使用