0

0

javascript - 如何优雅的回答“什么是面向对象”?

php中文网

php中文网

发布时间:2016-12-01 00:25:47

|

1316人浏览过

|

来源于php中文网

原创

发现很多面试官都喜欢问这个问题(我是学生),然而每次觉得自己在这个问题上都答得不尽人意。
我的回答往往是

立即学习Java免费学习笔记(深入)”;

  • 它的设计上的特点是:继承、封装、多态;

  • 从具象到抽象。属性变成变量,行为变成方法;

然而面试官似乎不是很满意,不知各路大神有没有相对优雅的回答?

回复内容:

发现很多面试官都喜欢问这个问题(我是学生),然而每次觉得自己在这个问题上都答得不尽人意。
我的回答往往是

立即学习Java免费学习笔记(深入)”;

  • 它的设计上的特点是:继承、封装、多态;

  • 从具象到抽象。属性变成变量,行为变成方法;

然而面试官似乎不是很满意,不知各路大神有没有相对优雅的回答?

先回答是一种编程范式

然后把你说的三个特性的具体描述说一下,比如:

  • 继承:可以使子类复用父类公开的变量、方法;

  • 封装:屏蔽一系列的细节。使外部调用时只要知道这个方法的存在;

  • 多态:父类的方法继承的到子类以后可以有不同的实现方式;

然后你可以说一说面向对象的优点和缺点,那么一件事情是没有绝对的优点和缺点的,需要一个对比。故此,你得说一说面向过程的编程思想

回来丢文章了

看了lz的问题被踩了,我在社区里看了一下,的确有相关的答案。我的文章算是一个小补充,如果有问题望各位指出。

面向对象的思想

再用我工作中的实例回答补充下,前段时间要做一个很简单的功能,点赞,确实是一个很简单的功能,但点赞的功能不只是一次,用户可以给其他的评论点赞,可以给文章点赞,可以给问题点赞等等,而且点赞之后可能触发一系列的事件(通知相关用户等),最初我想的有三种写法

// 1.文章被用户点赞
$article->votedBy($user);
// 2.用户给某篇文章点赞
$user->voteArticle($article);
// 3.用户伸出大拇指给某篇文章点赞
$user->thumbUp()->voteToArticle($article);
//$user->thumbUp()->voteToDiscuss($discuss);

最后我用了第三个写法,具体怎么实现,在你伸出大拇指的那一刻你就知道了。

这真的是个有趣的问题,哈哈。当然每个人都会有不同的理解,毕竟面向对象这个概念也是炒作起来的。

我的理解包括两个方面:

  • 一个是面向对象设计;

  • 一个是面向对象编程。

面向对象设计的核心思想是模块化,而面向对象编程的核心思想是面向接口,面向对象编程还有一个亲戚叫基于对象编程或者叫原型编程(JavaScript就是)。所以说面向对象编程一般是需要语言级别支持的,就像你上面说的封装、继承和多态什么的。

面向对象概念比较火的时候,人们常说软件复用,继承是软件复用的直接体现。但是后来人们发现,应该更多的使用组合而不是继承,接着面向接口编程就火了。

扯得有点远了,到此打住吧。

万物皆对象。

object-oriented

everything is object

一定用例子来
比如 动物-》furu动物-》 人, 狮子, 老虎

Red Panda AI
Red Panda AI

AI文本生成图像

下载

加上多态,比如都会叫

继承,比如furu动物都是胎生的,等等

实现项目时,需要将业务抽象成代码,这个抽象过程就是编程范式,面向对象就是其中一种。类似的还有面向过程,函数式编程。

面向对象的特点是继承, 多态, 封装

然后面试官就可以开始问继承, 多态, 封装了。

完美!~~~

最好知道下什么是面向过程,函数式编程,那就更好了。

self-contained, 如果他不懂, 你就可以直接走人了, 这个面试官太菜!

js说:万物皆对象,对象也是对象--没毛病

嗯 一切皆对象

记得在zhihu看过一个回答 他的理解是 (从实践上来讲)最重要的就是代码的复用。

封装:可以直接用封装好的代码块,这是复用。

继承:使用已有的属性,这是复用。

多态:不同的细节,但是基础上依然首先需要复用。

不讨论高深的程序设计、范式等理论性强的东西,对于写代码本身最直接的优势和体验就是,复用的多了,代码变得简洁。

面向你的对象(俗称男/女朋友),摆出一个优雅的姿势,然后深情地告诉他/她,看着我……这就是优雅地面向对象

打包数据和相关联的行为

有趣的问题。我也是学生,谈一些自己的理解。

面向对象有个很大的特点是,它同时把数据和行为(对数据的操作)结合起来,和现实世界的运行逻辑更相似
为什么这么觉得,是和传统的(面向过程等等)比较而得出来的。

打个比方, C 语言对数据和行为的处理其实有点割裂,更加重视了行为。它里面没有叫「对象」的概念,而是个充满动作(函数)的世界。主要都是函数调用函数,从头执行到尾给出结果……这个世界里最主要的东西就是各种动作。

而 C++ 的「对象」就特别像一个东西,比如说一个人。它的世界是充满物体的世界。主要都是物体和物体(人和物体、人和人等等)之间发生关系,这些关系或者说碰撞导致了最后的结果……这个世界里最主要的东西就是各种物体。

物体本身是携带数据、携带功能的;物体之间发生关系,才有了世界的运行。这两点,面向对象的程序设计和现实世界更为相像。

而上述「继承、封装、多态」等特点,便也可由此来模拟现实世界更好地理解了。我随便举点例子……

  • 继承:书 & 教材 & 计算机类教材 —— 这就是现实世界的继承关系。

  • 封装:手机 —— 它是封装好的,当你使用它时,不必知道里面的电路逻辑。

  • 多态:人.看(美女) & 人.看(强光) —— 参数类型不一样,执行的也不一样。

那面向对象的好处也很容易理解。一个是提高可理解性,因为对象按人类认识世界的规律呈现,符合常用思维方式;第二个就是更易于开发和维护,系统的优化很大程度上就等于对对象数据和功能的重新认识,在原有基础上修改一些东西。

哪里说的不对恳请各位批评指正……!

不排除有些面试官本身就很水,这他妈是一个大的无比的话题,坐一起谈几天都谈不完

少逛知乎,多写代码

万物皆对象。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.1万人学习

C# 教程
C# 教程

共94课时 | 5.7万人学习

Java 教程
Java 教程

共578课时 | 39.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号