php oop面试题,PHP面试题 - 对面向对象的理解

具体的题目应该是:什么是面向对象?主要的特征是什么?当然还有很多类似的题目,如果你说一下你对面向对象的理解,或者是你对比一下面向过程等等,诸如此类吧?如果我来回答这个问题,我会从以下二个方面来回答。

一、从字面上

1、什么叫面向?

面向即看待。把我们所能客观看到的一切事物都抽象成一个对象。也就是所说的“万物皆对象”。其主要思想就是把构成问题的各个事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在解决问题的过程中经历的步骤和行为。

通俗点:开发一套程序和装修一个房子一样,房子里电视、电脑、空调、冰箱;你都可以当做一个个实体,一个个对象。其实每个对象都有自己独特的功能职责,我们就是把每个独立的功能模块抽象成类,然后形成对象。一个系统会有大量的对象组成,这些对象之间都能够接收信息、处理数据和向其他对象发送信息等等相互作用。

2、什么是对象?

在我们PHP里对象是数据类型中的一种,整型、浮点、布尔、字符串又叫标量类型,标量相对复合类型而言,即是只能有一个值。数组作为复合类型能存储多种类型的值,但是当我要形容某一类的事物,且事物中又有很多种行为动作,那么就很难表现了。然后对象类型就应运而生。我们可以用对象来保存具体的叫什么名字、什么性别、会什么功夫的人。

总结:我们编写程序就是为了解决现实中的问题,而面向对象思想更符合人们处理较大项目的业务理解和代码开发。

二、从三大特性上对比面向过程、顺序编程

1、封装

封装可不是像函数那样的代码封装。封装更主要是将一个类的实现和使用进行分开,只保留部分属性和方法给开发人员使用。于是开发人员只需要关注这个类如何使用,而不用去关心具体的实现过程。而封装主要也有三个访问控制符来体现:public(公开的)、protected(受保护的)、private(私有的),同时也体现了安全性

2、继承

子类继承了父类,便自动继承了父类中所有的(public、protected)属性和方法。抽象类的存在就是为了继承,抽象类的定义往往就是提取了子类的公共属性和功能方法,以便子类继承使用。框架中(thinkphp5)的控制器、模型,定义时若继承了控制器基类、模型基类,便拥有了类似视图渲染、页面跳转、修改器、软删除等等功能。继承体现了代码的复用性或重用性

3、多态

子类继承了来自父类中的成员属性和方法。并多其方法进行实现(抽象、接口)或重写,于是多个子类中都具有相同的方法,但是却有了不同形态、不同结果的体现。多态增强了代码的灵活性和扩展性

代码参考

##### 面向顺序

$a = 20;

$b = 30;

$total = $a + $b;

##### 面向过程

function jia($one,$two){

return $one + $two;

}

$a = 20;

$b = 30;

$total = jia($a,$b);

##### 面向对象

class Jsq

{

protected $first;

protected $second;

protected $operator;

public function __construct($firstNumber,$secondNumber,$operator)

{

$this->first = $firstNumber;

$this->second = $secondNumber;

$this->operator = $operator;

switch ($this->operator){

case '+':

return $this->jia();

break;

}

}

protected function jia()

{

return $this->first + $this->second;

}

}

推荐阅读

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值