首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谈谈面向对象编程

然而, 我面试过许多号称精通面向对象编程(比如:Python / Ruby / C++)的工程师,随便问几个问题,就可以看出这个人对面向对象的理解: 你觉得在面向对象编程中,最重要的思想是什么?...如果有人提及「代码重用」,我会让她谈谈她对代码重用的理解,并附上一个工作中重用的例子。 对第一个问题,很多人回答继承,有些人会添上接口,多态等概念,很少人会提及代码重用。...这种编程的方式,与其说是面向对象编程,不如说是面向接口编程。对象在这里只是一个幌子,其存在的意义更多地是满足某种接口。在面向接口编程中,接口继承要远重要于类继承。 为什么面向接口编程如此重要?...多态并不单单是是面向对象编程的一个概念,函数式编程里面,多态也到处可见。...可见,多态并非是面向对象的专利。 上文中我们调侃的那个「鸟能飞,也会叫,鸭子呱呱呱但不会飞」的所谓面向对象的例子实质上破坏了里氏变换原则。它让你的代码无法享受多态的好处。

912110

【面试宝典】谈谈面向对象

面试官:知道面向对象吧。 小白:嗯,知道,面想对象就是封装继承多态呀。 面试官:回答了一部分,还能谈谈除了封装、继承、多态之外的吗,比如说怎么抽象,抽象的思想是什么?...小白:啊,面向对象还有这么多东西呀。...今天的面试宝典给大家谈谈什么是面向对象,这个问题在大公司都会问一下,因为面向对象分析问题是一个程序员的基本素养,它就相当于编写程序的指导思想,你的程序质量高低,代码实现的难易都与面向对象有关。...关于面向对象一般网上都是在说继承、封装、多态等名词,我觉得对于初学者来讲都太抽象,太难以理解,我觉得编程思想中的几段话讲的很好,很利于初学者来理解面向对象的概念。下面就给大家来说说: 万物皆为对象。...最后附上一张网上有趣的图,应该能够帮你理解面向对象个各种知识。 ? ----

88880
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS面向对象

    面向对象面向过程区别面向对象是把构成问题的事物拆解为各个对象,来描述这个事物在当前问题中的行为,而不是为了实现某个步骤 面向过程,是分析出实现问题的每个步骤,然后编写函数,并依次调用。...面向对象特点封装 让使用的人不考虑内部实现,只考虑功能使用,把内部代码保护起来,提供api接口让用户调用继承 从父类继承出一些方法和属性,利于代码复用多态 不同对象作用于同一操作产生不能效果JS三大对象宿主对象所有非本地对象都属于宿主对象所有...DOM和BOM对象都属于宿主对象嵌入到网页的JS来说,宿主对象就是浏览器提供的,比如:Window和Documnet等本地对象包括:Object、Array、Date、RegExp、Boolean、Number...、String这些引用类型在运行过程中需要通过new来创建所需的实例对象内置对象是本地对象的子集在ECMAScript程序开始执行前就存在,本身就是实例化内置对象,开发者无需再实例化内置独享有Global...构造函数/创建实例 通过this添加的对象和属性都指向当前对象,所以在实例化的时候,通过this添加的方法和属性都会在内存中复制一份。

    11310

    JS面向对象编程

    面向对象编程 在学习了js高级以及es6之后,再来学习面向对象编程,之前在学习es6,canvas的时候已经有接触到了这种思想,感觉还是需要在深入的学习一下,这部分内容牵扯到很多原型链部分的东西,当做复习一下还是很不错的...ES5中的面向对象 面向对象编程(OOP)具有灵活、代码可复用、高度模块化等特点。...对象是单个实物的抽象 对象是一个容器,封装了对应的属性和方法,属性是对象的状态,方法是对象的行为(完成的任务) 构造函数实例化对象 在ES5中没有class类的概念,所以面向对象是基于构造函数和原型链的...:js引擎会先寻找对象本身的属性和方法,如果找不到就到它的原型对象去找,如果还是找不到,就到原型的原型去找,如果直到最顶层的Object.prototype还是找不到,就会返回undefined constructor...---- 在ES6中新增了class类的关键字,以及一些相关属性,优化了先前的面向对象代码可读性低的问题,新的class写法让对象原型的写法更加清晰,更加的像面向对象编程的语法,因此class也只是一个语法糖

    4.1K20

    js面向对象理解

    ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。...js(如果没有作特殊说明,本文中的js仅包含ES5以内的内容)本身是没有class类型的,但是每个函数都有一个prototype属性。...prototype指向一个对象,当函数作为构造函数时,prototype则起到类似class的作用。 一.创建对象 创建一个对象,然后给这个对象新建属性和方法。...1)__proto__和prototype JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性,用于指向创建它的函数对象的原型对象prototype。...四.继承 继承是面向对象中一个比较核心的概念。其他正统面向对象语言都会用两种方式实现继承:一个是接口实现,一个是继承。

    11110

    JS面向对象笔记

    一、js零散笔记 0、匿名函数定以后直接调用:(function(numA, numB) { alert(numA + numB); })(3,4);//弹窗7 1、js中函数就是对象对象就是函数。...arguments表示函数的参数集合 2、js中方法直接调用为函数,用new调用为对象。...JavaScript中没有类的语法,是用函数闭包模拟出来的 3、js中给对象动态添加属性示例: //定义一个函数 function Person(){ } //1、直接调用函数名,就只是单纯的表示调用函数...Person(); //2、是用new,表示创建了一个对象js是动态语言,可以给对象动态添加属性和方法 var per = new Person(); per.name = "大锤"; //...给per对象动态添加方法sayHi //调用per对象的属性和方法 alert(per.name);//或者alert(per['name']); per.sayHi(); 4、js中支持this关键字

    7.5K61

    JS面向对象详解

    面向对象面向过程 面向对象面向过程是两种不同的编程思想,刚开始接触编程的时候,我们大都是从面向过程起步的,毕竟像我一样,大家接触的第一门计算机语言大概率都是C语言,C语言就是一门典型的面向过程的计算机语言...面向过程主要是以动词为主,解决问题的方式是按照顺序一步一步调用不同的函数。面向对象是以名词为主,将问题抽象出具体的对象,而这个对象有自己的属性和方法,在解决问题的时候,是将不同的对象组合在一起使用。...//面向过程装大象1.开(冰箱)2.(大象)装进(冰箱)3.关(冰箱) //面向对象装大象1. 冰箱.开门()2. 冰箱.装进(大象)3....冰箱.关门() 从这个例子可以看出,面向对象是以主谓为主,将主谓堪称一个一个的对象,然后对象有自己的属性和方法。面向对象是以功能来划分问题的,而不是步骤。...功能上的统一保证了面向对象设计的可扩展性,解决了代码重用性的问题。这也是在漫长的程序设计的发展过程中得到的验证结果,面向对象的编程思想较之于面向过程较好一点。

    2.3K31

    JS高级——面向对象

    举例:将大象放入冰箱 面向过程,就是按照我们分析好了的步骤,按照步骤解决问题。 面向对象编程 面向对象是把事务分解成为一个一个对象,然后由对象之间分工合作。...举例:将大象装进冰箱,面向对象做法: 先找出对象,并写出这些对象的功能: 大象对象 进去 冰箱对象 打卡/关闭 使用大象和冰箱的功能 面向对象是以对象功能来划分问题,而不是步骤。...面向对象的特性: 封装性 继承性 多态性 面向过程和面向对象的对比 面向过程 面向对象 优点:性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。...ES6中的类和对象 面向对象 面向对象更贴近我们的实际生活,可以使用面向对象描述现实世界事物,但是事物为具体的事物和抽象的事物 面向对象的思维特点: 抽取(抽象)对象公用的属性和行为组织(封装)成一个类...面向对象编程我们考虑的是有那些对象,按照面向对象的思维特点,不断的创建对象,使用对象,指挥对象做事情。 对象 现实生活中,万物皆对象对象是一个具体的事物,看得见摸得着的事物。

    2.2K30

    JS面向对象一:MVC的面向对象封装

    JS面向对象一:MVC的面向对象封装 MDNjavascript面向对象 面向对象(Object-Oriented) ? 面向对象面向的意思是以...为主,面向对象编程既以对象为主的编程....面向对象的一些概念: Namespace 命名空间 允许开发人员在一个独特, 应用相关的名字的名称下捆绑所有功能的容器。 Class 类 定义对象的特征。它是对象的属性和方法的模板定义....类(从MVC提炼面向对象是什么) 使用的代码是 模块化、MVC里的V和C、闭包与立即执行函数的使用和MVC中的M(model)、MVC总结 接下来优化老版本的message.js 箭头函数内外this相通...总结: 面向对象就是既然这些对象有相同的属性和相同的行为,那么就把相同的地方存到一个地方,当做一个模板.这就叫类 当需要生成对象的时候,new一个对象出来,这个对象就有这个模板上的属性和行为.这就叫实例化一个对象...面向对象的核心就是实例化一个对象 其他:对象的方法 以下引用自MDNjavascript面向对象 如果一个Object的的属性是函数,那么这个属性叫方法 在JavaScript中方法通常是一个绑定到对象中的普通函数

    2.7K20

    JS面向对象笔记 转

    一、js零散笔记 0、匿名函数定以后直接调用:(function(numA, numB) { alert(numA + numB); })(3,4);//弹窗7 1、js中函数就是对象对象就是函数。...arguments表示函数的参数集合 2、js中方法直接调用为函数,用new调用为对象。...JavaScript中没有类的语法,是用函数闭包模拟出来的 3、js中给对象动态添加属性示例: //定义一个函数 function Person(){ } //1、直接调用函数名,就只是单纯的表示调用函数...Person(); //2、是用new,表示创建了一个对象js是动态语言,可以给对象动态添加属性和方法 var per = new Person(); per.name = "大锤"; //...给per对象动态添加方法sayHi //调用per对象的属性和方法 alert(per.name);//或者alert(per['name']); per.sayHi(); 4、js中支持this关键字

    14K21

    JS面向对象笔记二

    window,属性也会变成全局属性, 则被构造函数赋值的变量不再是一个对象,而是一个未定义的变量,js不允许给undefined添加属性,所以调用undefined的属性会报错。...this); } } obj.fun(); //调用 /* 打印日志: 大锤@sina.com: aaa 大锤@sina.com: bbb 大锤@sina.com: 333 */ 4、关于js...isTrue14 + " ," + isTrue15 + ", " + isTrue16); //true, true, true, true, true, true ,true, true 1、在JS...四、对象的Copy, 和面向对象三大特性模拟(继承,多态,封装) 1、拷贝对象,需要满足以下两个条件: 拷贝后的对象,与原对象具有同样的prototype原型对象。...面向对象之继承特性体现,让一个构造函数继承另外一个构造函数:   1)、在子类的构造函数中,调用父类构造函数   2)、让子类的原型指向父类的原型,这样子类原型继承了父类原型   多态的模拟则是重写子构造函数的继承自父构造函数的方法

    5.7K70

    021:谈谈面向对象的三大特性

    参考答案 封装: 常见的编程范式有:过程式编程、面向对象编程、函数式编程,现在函数式编程很火,但是面向对象编程依然是主流。...在Java中,封装是一种抽象机制,Java中提供了类和对象的概念,对象包含了一组数据和行为,并且可以响应对应的请求,这样的机制有助于开发者面向具体的领域问题编程,而不是像之前过程式语言中一样,就按照一步步的步骤来处理一些数据...在这里并不是说之前的语言不够好,而是说应用成本的问题,C语言不支持面向对象,但是也产生了unix、linux这样伟大的软件,但其实编程思想是相通的,在linux内核中有很多地方都用到了面向对象的编程思想...知识点梳理 面向对象理论的三个基本概念:封装、继承、多态的知识点在上面已经梳理过了,这里给出在OOP方面急需深入的建议。...面向对象是一种很好的编程范式,不过我们不能手里拿着锤子就看到啥都是钉子,还需要扩展下自己的视野。

    33330

    谈谈你是怎么理解面向对象的?

    一道经典的面试题,当面试官问你,你是怎么理解面向对象的即OOP,你应该怎么回答呢? 答:面向对象的三个特征是:封装,继承,多态。...3、父类的引用,指向子类对象面向对象  1、什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念。 2、什么是对象?...从类中,拿到的具有具体属性值的个体,称为对象对象是一个具体的个体。 比如人类;张三 3、类和对象的关系? 类是对象的抽象化!对象是类的具体化!...常用方法小结 1、当使用=讲一个对象,赋值给另一个对象时,赋的实际是对象的地址。 两个对象指向同一地址,所以一个对象改变,另一个也会变化。...className).".class.php"; } $zhangsan=new Person(); //本文件内没有Person类,会自动执行__autoload()加载person.class.php文件 面向对象串行化与反串行化

    73210

    js面向对象思想精要

    这是一些简单的数据,保存在栈空间; 1.2.鉴别原始类型 使用typeof方法, eg: console.log(10);//number; 特例:鉴别null时返回的是object; 2.引用类型(js...中的对象) 2.1创建 var person = {name:"zhangsan",age:26}; console.log(person.name)//zhangsan var child...= new Object(); child.name = "zhangsan"; console.log(child.name);//zhangsan 2.2对象的解除 对象在不使用时将其解除...(person) 使用该方法不能添加,不能删除和改变,也不能写入数据,相当于一个只读的封印对象,可以使用Object.isFrozen(person)检测是否被冻结, 第四章 构造函数和原型对象 一.构造函数...几乎所有的函数都具有一个prototype属性,跟踪其原型对象,该属性是一个指向该实例使用的原型对象的指针, 第五章 继承 第六章 对象模式

    1.2K10
    领券