精华内容
下载资源
问答
  • 什么是面向对象

    万次阅读 多人点赞 2019-09-09 16:54:50
    面向对象(OOP)概述 从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,...

    面向对象(OOP)概述

    从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java就是面向对象,就是一切以对象为载体,去编程,去面对。面试官: go out ! now!

    img

    滚回来的我赶紧看看什么是OOP,Object Oriented Programming,原来就是面向对象的编程啊,还有OOD(面向对象的设计),OOA(面向对象的分析)。那什么是面向对象呢?要想了解这个问题我们要先了解面向过程,这样对比我们就好理解了。

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

    img

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

    有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

    1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

    2、去饭店,张开嘴:老板!来一份鱼香肉丝!

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

    面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。总的来说就是降低耦合,提高维护性!

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

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

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

    面向过程和面向对象的区别

    面向过程

    优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
    缺点:不易维护、不易复用、不易扩展

    面向对象

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

    面向对象三大特性五大原则

    img

    面向对象的三大特性

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

    2、继承
    提高代码复用性;继承是多态的前提。

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

    五大基本原则

    • 单一职责原则SRP(Single Responsibility Principle)
      类的功能要单一,不能包罗万象,跟杂货铺似的。

    • 开放封闭原则OCP(Open-Close Principle)
      一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。

    • 里式替换原则LSP(the Liskov Substitution Principle LSP)
      子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~

    • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
      高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。

    • 接口分离原则ISP(the Interface Segregation Principle ISP)
      设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

    总结

    • 抽象会使复杂的问题更加简单化。
    • 从以前面向过程的执行者,变成了张张嘴的指挥者。
    • 面向对象更符合人类的思维,面向过程则是机器的思想
    展开全文
  • 什么是对象,什么是类,什么是面向对象的编程语言,什么是面向面向对象的编程思想? 什么是对象,对象就是拥有属性值得特殊数据类型。 JavaScript对象是这样,Java类也是这样,任何面向对象的编程语言都是这样。...

    什么是对象,什么是类,什么是面向对象的编程语言,什么是面向面向对象的编程思想?


    什么是对象,对象就是拥有属性值得特殊数据类型。

    JavaScript对象是这样,Java类也是这样,任何面向对象的编程语言都是这样。面向对象的变成思想,其实就是这个意思。


    看一个编程语言是不是面向对象的,就看他的数据类型里,有没有一种类型,是拥有属性值得,即有没有类的概念,由此来看Java是有的(自定义类,可以定义属性),JavaScript也是有的(Object类,可以定义属性)。


    http://blog.csdn.net/jean_1221/article/details/51694008


    展开全文
  • 一、什么是面向过程? 面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并...二、什么是面向对象? 面向对象则是一种以对象为中心的编程思想,就是...

    一、什么是面向过程?

    面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用。
    面向过程我们所关心的是解决一个问题的步骤,举个例子,汽车发动、汽车熄火,这是两个不同的事件,对于面向过程而言,我们关心的是事件本身,因此我们会使用两个函数完成以上两个动作,然后依次调用即可。

    二、什么是面向对象?

    面向对象则是一种以对象为中心的编程思想,就是通过分析问题,分解出一个一个的对象,然后通过不同对象之间的调用来组合解决问题。建立对象的目的不是为了完成某个步骤,而是为了描述某个事物在解决整个问题的过程中的行为。
    如上面的例子,汽车发动、汽车熄火,对于面向对象而言,我们则关心的是汽车这类对象,两个事件只是这类对象所具备的行为。

    三、面向对象的三大基本特征是什么?

    1、封装

    封装就是将一个类的某些信息隐藏在类的内部,不允许外界直接访问,而是提供某些方法实现对隐藏信息的访问和操作。
    封装的好处就是增强了数据安全性以及隐藏了类的实现细节,使用者无需了解具体实现细节,只需通过特定的接口进行访问,这样也方便类自身的实现和修改。

    2、继承

    继承是类与类之间的一种关系,即子类继承父类的特征和行为,使得子类具有和父类相同的属性和行为。
    继承的好处在于子类继承了父类的属性和方法从而实现了代码的复用

    3、多态

    多态是指一个类对象的相同方法在不同情形下有不同的表现形式。
    多态使得具有不同内部结构的对象可以共享相同的外部接口。

    转载于:https://blog.51cto.com/13666674/2390131

    展开全文
  • 什么是面向对象,以及什么是类和对象 ​ 1.1面向过程与面向对象的区别 ​ 面向对象是一种现在最为流行的程序设计方法 。将面向过程与面向对象进行比较。 ​ 首先这两个种都是一种编程思维, 在一些简单的动作...

    1.1面向过程与面向对象的区别

    ​ 面向对象是一种现在最为流行的程序设计方法 。将面向过程与面向对象进行比较。

    ​ 首先这两个种都是一种编程思维, 在一些简单的动作看来面向过程可能更加容易实现,它不用创建对象来进行实现,执行几步或一步完成。但是面对复杂动作面向对象来实现可能更加简单。二者之间做项目谁最简单不是绝对的

    ​ 面向过程(pop):以需要做的事为目标为进行,侧重点为目的。

    ​ 举个例子(洗衣服):1.拿起脏衣服

    ​ 2.丢进洗衣机

    ​ 3.倒入洗衣液

    ​ 4.开启洗衣机

    ​ 面向对象(oop):将需要做的事,分为多个模块(对象),侧重点在于受影响的对象。

    ​ 将洗衣服这个过程,进行封装,

    ​ 1.创建人的对象,然后人拿起脏衣服衣服丢进洗衣机

    ​ 2.创建洗衣服的对象,判断是否有脏衣服进入洗衣机,然后开启洗衣服模式。

    ​ 在这个例子中,不难看出,二者的侧重点完全不一样。前者为一步一步实现,然而后者是针对这个过程从产生出执行这些动作的事物来,从而达到目的。在java中这些事物我们称为对象。

    1.2 什么是类

    我们在生活中将狮子,豹子,狼归类为一类,我们称为动物类。它是一个客观事物,没有一个具体的提现,一个抽象的存在,却综合和大部分动物的特征,当我们听到动物时,往往会联想到前面提到的这些,然后会想到它们是肉食动物,群居动物(这些都是他们的属性)它们共有着捕食猎物的行为(看做成一个方法),这些都被动物所概括。
    那当我们联想到人呢。我们会联想到名字,头发,以及肤色。在java中我们把class标识作为一个类,下面是我的person类,它有着名字,头发,皮肤的特征,并且有一个行为eat()

    在这里插入图片描述

    1.3什么是对象?

    ​ 那么,我们该怎么执行这些代码呢,在生活中我们不会说人类去吃饭了,而是会说xx去吃饭了,这个xx是具体的某个人,在java中我们把这个xx定义为对象,它是一种客观事物的具体表现形式,在java编程思想(Thinking In java )中,指出,万物皆对象,所有事物都可能看做为一个对象,一类事物的分类,一类事物的具体表现形式,它有着自己类中具体的属性,以及行为。对象是类的实例

    ​ 这些属性和行为都来自于我定义的类的代码,但是却没有写明名字叫什么,头发什么颜色。现在我需要从这个person类中创建一个具体的表现对象

    请看下面的代码

    ​ 从person中创建了这个对象,并且执行了eat()方法,在控制台进行了输出
    在这里插入图片描述
    接下来对zhangsan的属性进行初始化

    在这里插入图片描述

    总结:
    通过代码可以看出, 我在person的类中创建了一个叫zhangsan的对象,他是person类的实例,并且根据它所在的类进行了属性的初始化赋值,执行了这个类都的方法。那么这个类有一个对象(实例)名字叫张三,有着黄色的皮肤,和黑色的头发,并且会吃饭。
    :是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物。 现实中,描述一类事物:
    属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 举例:人。 属性:名字、体重、年龄、颜色。 行为:走、跑、叫。
    对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。 现实中,一类事物的一个实例:一只小猫。 举例:一个人。
    属性:名字,头发,皮肤
    行为:吃饭。
    类与对象的关系 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。
    类是对象的模板,对象是类的实体。

    展开全文
  • 什么是面向对象

    千次阅读 多人点赞 2019-05-31 13:55:17
    什么是面向对象 ** 内容介绍 1、面向对象思想 2、类与对象的关系 3、局部变量和成员变量的关系 4、封装思想 5、private,this关键字 6、随机点名器 ###01面向对象和面向过程的思想 A: 面向过程与面向对象都是我们...
  • 什么是面向对象?什么是面向过程?及其优缺点。 计算机语言发展史 第一代:计算机语言01010100010111000 第二代:汇编语⾔00000011写成汇编语⾔就是 ADD,只要还原成⼆进制, 汇编语⾔就可以被 CPU 直接执⾏,所以...
  • 整理这份资料的目的为了帮助朋友们能够更直观的理解面向对象的编程。让后来者能够少走一些弯路。但其中不免有许多漏洞及错误,也还请前辈提出宝贵的更改意见,毕竟交流会让我们不断的进步。 技术日新月异的,他...
  • 什么是面向对象(面向对象的三大特性) 简介 学java的都知道,java语言有三个特性,也可以说是三个优点,就是 1.简单性: java语言相对于C语言,C++来说比较简单。 2.跨平台:java语言编写的代码可以在不同的操作...
  •  这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单...
  • 什么是面向对象编程

    千次阅读 多人点赞 2020-01-12 18:57:20
    本文关键字:面向对象、面向过程、面向过程编程语言、面向对象编程语言。说到编程,对于初学者来讲,可能第一想到的就是敲键盘,写代码,做游戏,甚至于会联想到软件破解、网络攻防。另一方面,在学了一些编程的相关...
  • 什么是面向对象程序设计

    万次阅读 多人点赞 2019-08-22 11:10:04
    1.面向对象和面向过程区别→2.什么是对象→3.什么是消息→4.什么是封装→5.什么是多态→6.面向对象的优点: 本文介绍 C++基础概念和知识。如果您想看其他语言(如 java)的语法,本文不涉及。 1.面向对象和面向...
  • 找工作,面试官都会问起什么是面向对象。对于这种问题也没有唯一的说法吧。自己感觉  要结合实际来说吧。以下通过面向对象的概念和面向对象特性来理解什么是面向对象    面向对象其实是现实世界模型的自然延伸...
  • 你知道什么是面向对象吗?

    千次阅读 多人点赞 2019-03-05 11:02:52
    什么是面向对象(OOP/Object Oriented Programming)? 好多人看到这个问题就感觉这么简单的问题也不会吗?这种问题还需要学吗?我不知道是不是有人和我一样,刚开始只是知道Java是面向对象开发的语言,但是什么是...
  • 什么是面向对象: 1、面向对象是一种编程方法; 2、面向对象是一种思维方式 3、面向对象不是一种编程语言。 应该如何学习面向对象: 1、掌握一门面向对象语言的语法。 2、掌握面向对象的思维方式。 3、熟悉...
  • 什么是面向对象编程(OOP)?

    千次阅读 2018-10-23 15:29:44
    Java 程序员第一个要了解的基础概念就是:什么是面向对象编程(OOP)
  • 经常听到有人说,计算机语言可以归为面向过程语言和面向对象语言,那么到底什么是面向对象,什么是面向过程呢?答:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个...
  • 什么是面向对象思想

    万次阅读 多人点赞 2016-12-13 15:02:08
    面向对象是一种思想,基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想将数据作为第一位,而方法或者说算法作为其次,这对数据一种...
  • 用简单的例子解释什么是面向对象

    千次阅读 2019-01-23 15:51:47
    什么是面向对象OO:可以先看下 https://www.jianshu.com/p/224d8fc4d0f0 提起面向对象,肯定都会先想到三大特性:封装,继承,多态。那这三大特性具体怎么理解呢?可以先在脑子里过一下。 如题,举个栗子吧: ...
  • 什么是面向对象思想? 代码优化好处? 设计模式和面向对象思想的关系? 不用设计模式或者不可以使用面向对象思想会有什么问题? 问题或或者场景? 生活中: 如曹操 写的诗句 “喝酒唱歌,人生真爽” 到 ...
  • 乔布斯回答什么是面向对象

    千次阅读 2015-11-05 08:52:58
    Jeff Goodell:请你用尽量简练的语言解释一下,究竟什么是面向对象的软件?乔布斯:对象就像人一样,也是活生生的生命。他们有知识,知道怎么完成任务;他们有记忆,可以把发生的事情记下来。你和他们不在低层次上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,679
精华内容 21,471
关键字:

什么是面向对象