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;

}

}

推薦閱讀

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371640.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371640.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371640.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NOIP2014自測(晚自習兩節+上午兩節 共5個小時)

昨天剛剛考完試然后就翹晚自習跟今天上午兩節課的語文和英語做做noip2014的題目。然后去評測了一番。首先day1day2的t1基本都是模擬&#xff0c;一看就出思路那種&#xff0c;直接ac掉。代碼如下 day1t1&#xff1a;#include<iostream>#define maxn 209using namespace s…

您在eXo平臺上的第一個Juzu Portlet

菊珠是佛教的佛珠。 一句話&#xff0c;我相信您已經學到了什么&#xff0c;印象深刻嗎&#xff1f; 好的&#xff0c;我在這里不談論佛教。 Juzu還是一個用于快速開發Portlet&#xff08;以及即將推出的獨立應用程序&#xff09;的新框架。 您可以在Juzu網站上找到所需的所有…

Spring注入方式及注解配置

一&#xff1a;基于xml的DI&#xff08;Dependency Injection&#xff09; 注入類型&#xff1a; 定義學生Student實體類和小汽車Car實體類&#xff1a;進行封裝和生成ToString(),并自定義屬性Car Student 123456789101112131415161718192021222324252627282930313233343536373…

java 切面 不執行,解決springboot的aop切面不起作用問題(失效的排查)

檢查下springboot的啟動類是否開啟掃描springbootapplicationcomponentscan(basepackages {"com.zhangpu.springboot"})另外springboot默認開啟的enableaspectjautoproxy為true如果不放心可以增加&#xff1a;enableaspectjautoproxy(proxytargetclasstrue)第二種可…

修改readonly屬性的值

一般情況下&#xff0c;readonly屬性的值是無法修改的&#xff0c;但可以通過特殊方式修改。定義一個student的類&#xff0c;其中name屬性為readonly類型的變量 interface JFStudent : NSObjectproperty(nonatomic,copy,readonly) NSString *hisName;property(nonatomic,copy)…

VisualVM:通過SSH監視遠程JVM(是否為JMX)

VisualVM是用于監視JVM&#xff08;5.0&#xff09;的有關內存使用情況&#xff0c;線程&#xff0c;GC&#xff0c;MBeans等的出色工具。讓我們看看如何通過SSH使用它來監視&#xff08;甚至使用JMX對其進行采樣&#xff0c;對帶有JMX的遠程JVM進行監視&#xff09;它。 這篇文…

h5 php js實驗總結,H5學習_番外篇_PHP數據庫操作

1. 文件操作1.1 打開關閉文件fopen()resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )?fopen()函數將resource綁定到一個流或句柄。綁定之后&#xff0c;腳本就可以通過句柄與此資源交互;例1:以只讀方式打開一個位于本地服務…

ReactNative開發環境

此內容根據徐贏老師的文檔整理后寫處 原版地址&#xff1a;https://tuomaxu.gitbooks.io/reactnative/content/ ReactNative是跨平開發的解決方案&#xff0c;在開發平臺的選擇上&#xff0c;mac平臺和win平臺都可以。 所需要工具如下&#xff1a; 1&#xff0c;Nodejs環境 2&a…

Python自動化開發 - 字符串, 列表, 元組, 字典和和文件操作

一、字符串特性&#xff1a;字符串本身不可修改&#xff0c;除非字符串變量重新賦值。Python3中所有字符串都是Unicode字符串&#xff0c;支持中文。 >>> name "Jonathan" >>> name "Jonathan" "Ni" >>>print(na…

shiro java配置,InI 配置 - 跟我學 Apache Shiro_教程_Java開發社區

INI 配置之前章節我們已經接觸過一些 INI 配置規則了&#xff0c;如果大家使用過如 Spring 之類的 IoC/DI 容器的話&#xff0c;Shiro 提供的 INI 配置也是非常類似的&#xff0c;即可以理解為是一個 IoC/DI 容器&#xff0c;但是區別在于它從一個根對象 securityManager 開始。…

在Spring容器外部連接對象依賴項

有幾種有趣的方法可以設置在Spring容器外部實例化的對象的屬性和依賴關系。 用例首先&#xff0c;為什么我們需要在Spring容器之外進行依賴注入–我知道三個用例&#xff0c;其中我實例化了Spring容器之外的對象并需要注入依賴。 首先考慮使用Spring TaskExecutor執行一系列任…

前端學習路線匯總

https://123.w3cschool.cn/plk2fihttps://www.w3cschool.cn/nodejs/nodejs-global-object.htmlnode.js轉載于:https://www.cnblogs.com/sxz2008/p/7238773.html

MediaInfo源代碼分析 1:整體結構

博客地址&#xff1a;http://blog.csdn.net/leixiaohua1020/article/details/12016231 MediaInfo源代碼分析系列文章列表&#xff1a; MediaInfo源代碼分析 1&#xff1a;整體結構MediaInfo源代碼分析 2&#xff1a;API函數MediaInfo源代碼分析 3&#xff1a;Open()函數MediaI…

測試RESTful服務的客戶端

開發使用RESTful Web API的應用程序可能意味著開發服務器和客戶端。 為服務器端編寫集成測試可以像使用Arquillian來啟動服務器一樣容易&#xff0c;并且可以通過REST確保測試服務是否按預期工作。 問題是如何測試客戶端。 在本文中&#xff0c;我們將了解如何使用模擬來測試客…

linux mysql誤刪,linux下MySQL安裝與刪除?(Ubuntu)

1、MySQL安裝A)MySQL安裝&#xff1a; sudo apt-get install mysql-server mysql-clientB)啟動/停止MySQL服務&#xff1a;MySQL 在安裝以后&#xff0c;MySQL 就已經啟動&#xff1b;如果需要手動啟動或停止則如下操作&#xff1a;手動啟動服務&#xff1a; sudo start mysql手…

對多態的理解例子

public class A {public String show(D obj) {return ("A and D");}public String show(A obj) {return ("A and A");} }class B extends A{public String show(B obj){ //重載return ("B and B");}public String show(A obj){ //重寫show(A obj…

【Java每日一題】20170120

20170119問題解析請點擊今日問題下方的“【Java每日一題】20170120”查看&#xff08;問題解析在公眾號首發&#xff0c;公眾號ID&#xff1a;weknow619&#xff09; package Jan2017; import java.util.Arrays; import java.util.List; public class Ques0120 { publ…

使用NoSQL實現實體服務–第2部分:合同優先

現在該開始使用NoSQL項目對SOA實體服務進行編碼了&#xff0c;并且正如我所承諾的&#xff0c;我將從Web服務的合同開始。 看一下本系列的第1部分 。 這種從Web服務合同定義開始的技術是面向服務的體系結構實現的“合同優先”方法的核心&#xff0c;并具有許多技術優勢&#xf…

php hugepage,【原創】解決Redis啟動報錯:Transparent Huge Pages (THP) support enabled in your kernel...

問題背景Redis啟動報錯&#xff1a;WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.This will create latency and memory usage issues with Redis.To fix this issue run the command echo never > /sys/kernel/mm/transparent_hugepage/…

hibernate cascade的真正含義

hibernate cascade 是 OneToOne OneToMany ManyToOne ManyToMany等注解的屬性&#xff0c;表示級聯操作。 /*** (Optional) The operations that must be cascaded to* the target of the association.** <p> By default no operations are cascaded.*/CascadeType[] cas…