物件導向是我們學習php不可或缺的一部分,很多朋友對物件導向都是一知半解的,所以導致很多朋友去公司面試的時候,問到php面試題中物件導向的問題就不知道如何是好,在之前的文章我們也介紹php面試題,筆試題,php核心技術題, 今天我們就帶大家來看看這個php面試題中的物件導向的題到底有哪些?
#public :公有,任何地方都可以訪問
protected:繼承,只能在本類或子類中訪問,在其它地方不允許訪問
private:私有,只能在本類中訪問,在其他地方不允許存取
<?php class Mysql { private static $instance = null; private $conn; // 构造方法,设置为private,不允许通过new获得对象实例 private function construct(argument) { $conn = mysql_connect("localhost","root","root"); } // 获取实例方法 public function getInstance() { if (!self::$instance instanceof self) { self::$instance = new self; } return self::$instance; } // 禁止克隆 private function clone(){} } // 获得对象 $db = Mysql::getInstance(); ?>
<?php class a { protected $c; public function a() { $this->c = 10; } } class b extends a { public function print_data() { return $this->c; } } $b = new b(); echo $b->print_data(); ?>
輸出結果10
# [!]4. PHP5 中
魔術方法
函數有哪幾個,請舉例說明各自的用法(騰訊PHP 工程師筆試題)sleep
serialize 之前被呼叫wakeup
unserialize 時被呼叫toString
列印一個物件時被呼叫set_state
呼叫var_export 時被調用,用set_state
的回傳值作為var_export 的回傳值construct
建構子,實例化物件時被呼叫
call 物件調用某個方法,若存在該方法,則直接調用,若不存在,則調用
call
函數
get
clone
複製物件時被呼叫autoload 實例化一個物件時,如果對應的類別不存在,則此方法被呼叫
相關題目:請寫出php5 的建構子和析構函式
建構子:
5. 如何使用下面的類別,並解釋下面什麼意思?
<?php class test{ function Get_test($num){ $num = md5(md5($num)."En"); return $num; } } $testObject = new test(); $encryption = $testObject->Get_test("itcast"); echo $encryption; ?>
class myclass{};相關題目:如何宣告一個名為「myclass」的沒有方法與屬性的類別? 7. How would you create an object, which is an instance of “myclass”? (Yahoo)
$obj= new myclass();相關題目:如何實例化一個名為“myclass”的物件?
<?php class mycalss{ private $propertyName; public function construct() { $this->propertyName = "value"; } } ?>## #9. The code below _ because .(騰訊)###
<?php class Foo{ ?> <?php function bar(){ print "bar"; } } ?>###A. will work, class definitions can be split up into multiple PHP blocks.###B. will not work, class definitions must be in a single PHP block.###C. will not work, class definitions must be in a single file but can be in multiple PHP blocks.###D. will work, class definitions can be split up into multiple files and multi PHP blo .###答案: B######10. 類別的屬性可以序列化後保存到session 中,以便以後可以恢復整個類,這要用到的函數是。 ###serialize() 和unserialize()######11. 在PHP 中,如果衍生類別與父類別有相同名字的函數,則衍生類別的函數會取代父類別的函數,程式結果為# ##
<?php class A{ function disName(){ echo "Picachu"; } } class B extends A{ var $tmp; function disName(){ echo "Doraemon"; } } $cartoon = New B; $cartoon->disName(); ?>###A. tmp###B. Picachu###C. disName###D. Doraemon###E. 無輸出###答案:D#######12. 介面與抽象類別的區別是什麼? #########抽象類別###是一種不能被實例化的類,只能作為其他類別的父類來使用。抽象類別是透過關鍵字abstract 來聲明的。 ###抽象類別與普通類別相似,都包含成員變數和成員方法,兩者的差異在於,抽象類別中至少要包含一個抽象方法,抽象方法沒有方法體,該方法天生就是要被子類別重寫的。 ###抽象方法的格式為:abstract function abstractMethod();###
接口是通过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法可以不写关键字 public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。
子类继承抽象类使用 extends,子类实现接口使用 implements。
类中的常量也就是成员常量,常量就是不会改变的量,是一个恒值。定义常量使用关键字 const,例如:const PI = 3.1415326;
无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象,访问常量的格式都是类名加作用域操作符号(双冒号)来调用,即:类名:: 类常量名
。
使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。
当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行autoload()
函数。
这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后就执行 include 或者 require 来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。
A. MVC
B. 代理模式
C. 状态模式
D. 抽象工厂模式
E. 单件模式
答案:E
A. 1个
B. 2个
C. 取决于系统资源
D. 3个
E. 想要几个有几个
答案:A
<?php abstract class a{ function construct() { echo "a"; } } $a = new a(); ?>
A. a
B. 一个错误警告
C. 一个致命性的报错
答案:C 因为类a是抽象类,不能被实例化
<?php class a{ function construct(){ echo "echo class a something"; } } class b extends a{ function construct(){ echo "echo class b something"; } } $a = new b(); ?>
A. echo class a something echo class b something
B. echo class b something echo class a something
C. echo class a something
D. echo class b something
答案:D
类 b 继承自类 a,两个类都定义了构造函数,由于二者名字相同,所以子类中的构造函数覆盖了父类的构造函数,要想子类对象实例化时也执行父类的构造函数,需要在子类构造函数中使用 parent::construct()
来显示调用父类构造函数。
<?php class MyClass{ public static function justDoIt(){ } } ?>
是的
单例模式,工厂模式
单例模式 实现代码 见 第二题
总结:
我们在这个片文章中,我们主要给大家汇总了一下php面试题中关于面向对象中的一些常见面试问题,具体细节大家可以自己扩展,希望对你有所帮助!
相关推荐:
以上是php面試題中物件導向的題目分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!