日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

php开发面试题---php面向对象详解(对象的主要三个特性)

發(fā)布時(shí)間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php开发面试题---php面向对象详解(对象的主要三个特性) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

php開發(fā)面試題---php面向?qū)ο笤斀?#xff08;對(duì)象的主要三個(gè)特性)

一、總結(jié)

一句話總結(jié):

對(duì)象的行為:可以對(duì) 對(duì)象施加那些操作,開燈,關(guān)燈就是行為。
對(duì)象的形態(tài):當(dāng)施加那些方法是對(duì)象如何響應(yīng),顏色,尺寸,外型。
對(duì)象的表示:對(duì)象的表示就相當(dāng)于身份證,具體區(qū)分在相同的行為與狀態(tài)下有什么不同。

?

1、php查看對(duì)象屬性的符號(hào)?

->:$this->name=$name;

?

2、php中構(gòu)造函數(shù)如何寫?

function __construct($name,$sex,$age){}

function __construct($name,$sex,$age){
??? echo "我是構(gòu)造函數(shù)<br>";
??? $this->name=$name;
??? $this->sex=$sex;
??? $this->age=$age;
}

?

?

3、php面向?qū)ο笤L問(wèn)權(quán)限有哪三種?

public 公共的(公共修飾符) 類內(nèi)部與類外部都可以訪問(wèn)的
private 私有的(私有修飾符) 只能在類內(nèi)部訪問(wèn)
protected 受保護(hù)的(保護(hù)成員修飾符) 子類可以訪問(wèn) 類外部不可以訪問(wèn)

?

4、oop的三個(gè)重要特性?

封裝,繼承,多態(tài)

封裝性:封裝性就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位。
封裝一個(gè)類需要兩步 第一步是私有化一個(gè)類 第二步是用set和get 做出讀取賦值的操作
他的好處是:隱藏類的實(shí)現(xiàn)細(xì)節(jié),可以方便加入邏輯控制性,限制對(duì)屬性的不合理操作,便于修改增強(qiáng)代碼的可維護(hù)性。

?

5、封裝性的定義,使用和好處是什么?

封裝性:封裝性就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位。
封裝一個(gè)類需要兩步 第一步是私有化一個(gè)類 第二步是用set和get 做出讀取賦值的操作
他的好處是:隱藏類的實(shí)現(xiàn)細(xì)節(jié),可以方便加入邏輯控制性,限制對(duì)屬性的不合理操作,便于修改增強(qiáng)代碼的可維護(hù)性。

?

6、php的面向?qū)ο笾械膅et和set函數(shù)是什么?

__get與__set

一般說(shuō)把類私有話更符合現(xiàn)實(shí)的邏輯。
預(yù)定義兩種函數(shù)來(lái)進(jìn)行獲取與敷值操作。
__get 獲取值通常是域的值
__set 設(shè)置值通常是域的值
__call 調(diào)用一個(gè)對(duì)象中不存在的方法時(shí),就會(huì)產(chǎn)生錯(cuò)誤call()這個(gè)方法來(lái)處理這種情況。

?

7、php中如何聲明和使用靜態(tài)方法?

static關(guān)鍵字 來(lái)聲明靜態(tài)方法
類內(nèi)部訪問(wèn):用self:self::$靜態(tài)屬性、self::靜態(tài)方法
類外部訪問(wèn):用類名:echo ClassName::CONSTANT;//類外部訪問(wèn)

?

8、php中繼承的關(guān)鍵字是什么?

extends:語(yǔ)法格式:class B extends A 此范例指明 B繼承了A

?

9、php中的多態(tài)性是什么?

同一種方法在子類與父類中執(zhí)行的結(jié)果不同
多態(tài)性是指在父類中定義的屬性或行為被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在父類及其各個(gè)子類中具有不同的語(yǔ)義。
就是說(shuō)同一種方法在子類與父類中執(zhí)行的結(jié)果不同。
class A {
function info(){
echo “A INFO”;
}
}
class B extends A {
function info(){
echo “B INFO”;
}
}
class C extends A {
function info(){
echo “C INFO”;
}
}
function printinfo($obj){
function printinfo(A $obj){
if($obj instanceof A)
$obj->info();
$obj->info();
}
}
$a=new A(); $b=new B(); $c=new C();
printinfo($a); //輸出A INFO
printinfo($b); //輸出B INFO
printinfo($c); //輸出C INFO

?

?

10、php中的抽象類和抽象方法怎么寫?

abstract關(guān)鍵詞:在class前加上或者在function前面加上

abstract class Person{
public $name;
abstract function getInfo();
}

?

11、php中繼承接口的關(guān)鍵詞是什么?

implements:比如class D implements B,C{}
interface A{ function a();}
interface B{ function b();}
interface C extends A{ function c();}
class D implements B,C{function a(){}function b(){}function c(){}
}

?

?

12、php中接口的寫法和注意?

接口只能聲明常量和抽象方法(方法默認(rèn)是抽象的)
interface PCI{}
interface PCI{const TYPE="PCI";//public $name; errorfunction start();function stop();
}

?

?

?

?

二、php-------面向?qū)ο笤斀?/h2>

參考:php-------面向?qū)ο笤斀?br />https://www.cnblogs.com/yuyu1993/p/5566493.html

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?php面向?qū)ο笤斀?/span>

?

面向?qū)ο?對(duì)象概念是面向?qū)ο蠹夹g(shù)的核心。在顯示世界里我們所面對(duì)的事情都是對(duì)象,如計(jì)算機(jī)、電視機(jī)、自行車等。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象是一個(gè)由信息及對(duì)信息進(jìn)行處理的描述所組成的整體,是對(duì)現(xiàn)實(shí)世界的抽象. 對(duì)象的主要三個(gè)特性 對(duì)象的行為:可以對(duì)

?

面向?qū)ο?對(duì)象概念是面向?qū)ο蠹夹g(shù)的核心。在顯示世界里我們所面對(duì)的事情都是對(duì)象,如計(jì)算機(jī)、電視機(jī)、自行車等。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象是一個(gè)由信息及對(duì)信息進(jìn)行處理的描述所組成的整體,是對(duì)現(xiàn)實(shí)世界的抽象.

對(duì)象的主要三個(gè)特性
對(duì)象的行為:可以對(duì) 對(duì)象施加那些操作,開燈,關(guān)燈就是行為。
對(duì)象的形態(tài):當(dāng)施加那些方法是對(duì)象如何響應(yīng),顏色,尺寸,外型。
對(duì)象的表示:對(duì)象的表示就相當(dāng)于身份證,具體區(qū)分在相同的行為與狀態(tài)下有什么不同。

面向?qū)ο竽P?/span>

面向?qū)ο蟮母拍?#xff1a;
oop(面向?qū)ο蟮木幊?它能是其代碼更加簡(jiǎn)潔易于維護(hù)并且具有更強(qiáng)的可重性

什么是類:
類是具有相同屬性和服務(wù)的一組對(duì)象的集合比如說(shuō)人,書,輪船,車都屬于類,他為屬于該類的對(duì)象做了一個(gè)統(tǒng)一的抽象描述,在編程的語(yǔ)言中類是一個(gè)單獨(dú)的程序,它應(yīng)該有一個(gè)類名包括屬性的說(shuō)明和服務(wù)兩個(gè)部分。
什么是對(duì)象:
對(duì)象是系統(tǒng)中描述客觀事件的一個(gè)實(shí)體,他是構(gòu)成系統(tǒng)的一個(gè)基本單位。*數(shù)據(jù)與代碼都被捆綁在一個(gè)實(shí)體當(dāng)中*,一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組行為組成。
從抽象的角度來(lái)說(shuō),對(duì)象是問(wèn)題域或?qū)崿F(xiàn)域中某些事物的一個(gè)抽象。他反映該事物在系統(tǒng)中保存的信息和發(fā)揮的作用:它是一組屬性和有權(quán)對(duì)這些屬性進(jìn)行操作的一個(gè)封裝體??陀^世界是由對(duì)象和對(duì)象之間的聯(lián)系組成的。
類和對(duì)象的關(guān)系:
類與對(duì)象的關(guān)系就如模具和鑄件的關(guān)系,類的實(shí)力化的結(jié)果就是對(duì)象,而對(duì)對(duì)象的抽象就是類,類描述了一組有相同特性(屬性)和相同行為的對(duì)象。

類與屬性和方法
PHP中定義類語(yǔ)法格式:
class classname [可選屬性]{
public $property [=value];… //用public聲明一個(gè)公共標(biāo)識(shí) 然后給予一個(gè)變量 變量也可以賦值
function functionname ( args ){ //類的方法里的成員函數(shù)
代碼} …
//類的方法(成員函數(shù))
}

生成對(duì)象(類的實(shí)例化): $對(duì)象名=new classname( );
使用對(duì)象的屬性
在一個(gè)類中,可以訪問(wèn)一個(gè)特殊指針$this當(dāng)在該類中通過(guò)一個(gè)操作設(shè)置或訪問(wèn)該變量時(shí),使用$this->name來(lái)引用.


對(duì)象的生成
定義好類后用一個(gè)new來(lái)聲明,由于對(duì)象資料的封裝特性,對(duì)象是無(wú)法由主程序區(qū)塊直接訪問(wèn)的須通過(guò)對(duì)象來(lái)調(diào)用類中所定義的屬性和行為函數(shù),間接地達(dá)成存取控制類中資料的目的。


對(duì)象和類的關(guān)系
對(duì)象和類的關(guān)系:
對(duì)象是實(shí)際存在的,占有動(dòng)態(tài)資源。
類是對(duì)象的藍(lán)圖,可能占有靜態(tài)資源。
對(duì)象屬性占有動(dòng)態(tài)資源
類(靜態(tài))屬性實(shí)際上是有類名字空間上的“全局變量”
性能考慮:
每個(gè)對(duì)象要單獨(dú)占用數(shù)據(jù)空間
增加的調(diào)用層次可能消耗執(zhí)行時(shí)間
方法的參數(shù)形式和傳遞方式
方法的參數(shù)可以是基本數(shù)據(jù)類型、數(shù)組和類對(duì)象。
基本數(shù)據(jù)類型:值參傳遞
數(shù)組:值參傳遞
類對(duì)象:引用傳遞


構(gòu)造函數(shù)
構(gòu)造函數(shù)是在類中起到初始化的作用
構(gòu)造函數(shù)的生成方法與其他函數(shù)一樣只是其名稱必須是__construct().
語(yǔ)法格式:function __construct(參數(shù)){
。。。。。。。。
}
范例:
class Person{
public $name;
public $sex;
public $age;
function __construct($name,$sex,$age){
echo "我是構(gòu)造函數(shù)<br>";
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
輸出結(jié)果:初始化


析構(gòu)函數(shù)
當(dāng)對(duì)象脫離其作用域時(shí)(例如對(duì)象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動(dòng)執(zhí)行析構(gòu)函數(shù)。應(yīng)在退出前在析構(gòu)函數(shù)中用釋放內(nèi)存。
析構(gòu)函數(shù)__destruct 析構(gòu)函數(shù)沒(méi)有任何參數(shù)
范例:
class person{
function _ _destruct( )
{ echo "bye bye !“; }
}
$a=new person();

?

訪問(wèn)類型
public 公共的(公共修飾符) 類內(nèi)部與類外部都可以訪問(wèn)的
private 私有的(私有修飾符) 只能在類內(nèi)部訪問(wèn)
protected 受保護(hù)的(保護(hù)成員修飾符) 子類可以訪問(wèn) 類外部不可以訪問(wèn)

?

oop的三個(gè)重要特性
封裝,繼承,多態(tài)
封裝性:封裝性就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位。
封裝一個(gè)類需要兩步 第一步是私有化一個(gè)類 第二步是用set和get 做出讀取賦值的操作
他的好處是:隱藏類的實(shí)現(xiàn)細(xì)節(jié),可以方便加入邏輯控制性,限制對(duì)屬性的不合理操作,便于修改增強(qiáng)代碼的可維護(hù)性。

?

__get與__set
一般說(shuō)把類私有話更符合現(xiàn)實(shí)的邏輯。
預(yù)定義兩種函數(shù)來(lái)進(jìn)行獲取與敷值操作。
__get 獲取值通常是域的值
__set 設(shè)置值通常是域的值
__call 調(diào)用一個(gè)對(duì)象中不存在的方法時(shí),就會(huì)產(chǎn)生錯(cuò)誤call()這個(gè)方法來(lái)處理這種情況。

?

靜態(tài)屬性和方法
static關(guān)鍵字 來(lái)聲明靜態(tài)方法
static靜態(tài)變量 在類的內(nèi)部生成一個(gè)靜態(tài)變量 就是能夠被所有類的實(shí)力化共想 也就是說(shuō)靜態(tài)成員則放到了“初始化靜態(tài)段”,在類第一次被加載的時(shí)候放入的,可以讓堆內(nèi)存里面的每個(gè)對(duì)象所共享
使用方法:self::$靜態(tài)屬性、self::靜態(tài)方法
static function p(){
echo self::$country;
echo self::PI;//訪問(wèn)常量
//echo $this->name;在靜態(tài)方法中只能操作靜態(tài)屬性
//self::p();
}
外部調(diào)用:類::$靜態(tài)屬性、類::靜態(tài)方法

const關(guān)鍵字:用來(lái)生成常量 常量是唯一的不能改變的 慣例常量為大寫
const CONSTANT = 'constant value'; 生成一個(gè)常量
echo self::CONSTANT;//類內(nèi)部訪問(wèn)
echo ClassName::CONSTANT;//類外部訪問(wèn)

繼承性
B類的對(duì)象擁有A類的全部屬性與行為,稱作B對(duì)A類的繼承。
假如一個(gè)類從多個(gè)類中繼承了屬性與服務(wù),這稱為多繼承,通常我們成為繼承類為子類被繼承類為父類,在PHP中只有單繼承,但一個(gè)父類可以被多個(gè)類繼承,但是一個(gè)子類只能有一個(gè)父類,但是允許關(guān)聯(lián)繼承,通過(guò)繼承可以減化類的定義。
extende聲明繼承關(guān)系
語(yǔ)法格式:class B extends A 此范例指明 B繼承了A
類的外部訪問(wèn)對(duì)子類是有效的
子類與父類的屬性與方法
子類繼承父類的所有內(nèi)容,但父類中的private部分不能直接訪問(wèn)
子類中新增加的屬性和方法是對(duì)父類的擴(kuò)展
子類中定義的與父類同名的屬性是對(duì)父類屬性的覆蓋,同名的方法也是對(duì)父類方法的覆蓋

?

重寫的方法
在子類中,使用parent訪問(wèn)父類中的被覆蓋的屬性和方法
parent::__construce();
parent::$name;
parent::fun();

覆蓋父類原有屬性
clone克窿對(duì)象 語(yǔ)法格式$c=clone $p; $c克窿的對(duì)象$p 輸出echo $c->name;

對(duì)象比較
===兩個(gè)比較運(yùn)算符。
==是比較兩個(gè)對(duì)象的內(nèi)容。
===是比較對(duì)象的句柄,即引用地址。

instanceof操作符用于檢測(cè)對(duì)象實(shí)力是否屬于某一個(gè)類的類型 屬于返回true 不屬于返回false
__clone()如果想在克隆后改變?cè)瓕?duì)象的內(nèi)容,需要在__clone()中重寫原本的屬性和方法
function __clone(){
$this->name="我是一個(gè)克隆人";
}

final表示一個(gè)類是最終版本 也就是說(shuō)它不能在被子類調(diào)用

?

?

多態(tài)性

多態(tài)性是指在父類中定義的屬性或行為被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在父類及其各個(gè)子類中具有不同的語(yǔ)義。
就是說(shuō)同一種方法在子類與父類中執(zhí)行的結(jié)果不同。
class A {
function info(){
echo “A INFO”;
}
}
class B extends A {
function info(){
echo “B INFO”;
}
}
class C extends A {
function info(){
echo “C INFO”;
}
}
function printinfo($obj){
function printinfo(A $obj){
if($obj instanceof A)
$obj->info();
$obj->info();
}
}
$a=new A(); $b=new B(); $c=new C();
printinfo($a); //輸出A INFO
printinfo($b); //輸出B INFO
printinfo($c); //輸出C INFO

?

?

抽象方法和抽象類

抽象方法是作為子類摸版使用的。
abstract class Person{
public $name;
abstract function getInfo();
}
抽象類不能被實(shí)力話,一個(gè)抽象類中,必須有一個(gè)抽象方法。但是抽象類中可以定義動(dòng)態(tài)函數(shù)。

?


接口
當(dāng)一個(gè)類繼承了一個(gè)接口之后,它要覆蓋接口的所有方法,接口只能聲明常量,接口的方法必須定義為共有否則無(wú)法繼承,接口可以與多個(gè)接口間繼承
語(yǔ)法:
interface PCI{
const TYPE="PCI";
//public $name; error
function start();
function stop();
}
接口中的方法可以聲明為static
interface A{ function a();}
interface B{ function b();}
interface C extends A{ function c();}
class D implements B,C{
function a(){}
function b(){}
function c(){}
}

轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/10934920.html

總結(jié)

以上是生活随笔為你收集整理的php开发面试题---php面向对象详解(对象的主要三个特性)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。