類與物件的學習(一)

2021-08-28 03:20:25 字數 3472 閱讀 8766

一、trait

應用的幾個 class 之間不需要繼承

自己的理解 trait 不需要去繼承 指需在需要用到它的類裡面 use 其名稱即可,同時須在 class 上方use 完整位址如下

<?php

use think\model;

use think\model\concern\softdelete;

/** * @property integer $id

*/class reimbursement extends model

/*** @param array $data 修改

* @return false|int

*/public function edit($data)

public function results()

public function staffs()

public function gettypeattr($raw)

return $result;

}}

從基類繼承的成員會被 trait 插入的成員所覆蓋。優先順序是來自當前類的成員覆蓋了 trait 的方法,而 trait 則覆蓋了被繼承的方法。

abstract 

抽象類【定義為抽象的類不能被例項化,如果乙個類裡面有抽象方法,那麼這個類就必須宣告為抽象類,被定義為抽象的方法只是宣告了其呼叫方式(引數),不能定義其具體的功能實現。】

<?php

abstract class abstractclass

}class concreteclass1 extends abstractclass

public function prefixvalue($prefix) concreteclass1";

}}class concreteclass2 extends abstractclass

public function prefixvalue($prefix) concreteclass2";

}}$class1 = new concreteclass1;

$class1->printout();

echo $class1->prefixvalue('foo_') ."\n";

$class2 = new concreteclass2;

$class2->printout();

echo $class2->prefixvalue('foo_') ."\n";

?>

返回資料

concreteclass1

foo_concreteclass1

concreteclass2

foo_concreteclass2

物件介面

inte***ce 【使用介面(inte***ce),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容,介面是通過 inte***ce 關鍵字來定義的,就像定義乙個標準的類一樣,但其中定義所有的方法都是空的。介面中定義的所有方法都必須是公有,這是介面的特性。】

implements 【實現介面】【實現多個介面時,介面中的方法不能有重名、介面也可以繼承,通過使用 extends 操作符、類要實現介面,必須使用和介面中所定義的方法完全一致的方式。否則會導致致命錯誤。】

新增了乙個 final 關鍵字。如果父類中的方法被宣告為 final,則子類無法覆蓋該方法。如果乙個類被宣告為 final,則不能被繼承。

異常處理

<?php

function inverse($x)

return 1/$x;

}try catch (exception $e)

// continue execution

echo "hello world\n";

?>

返回資料

0.2

caught exception: division by zero.

hello world

finally的異常處理

<?php

function inverse($x)

return 1/$x;

}try catch (exception $e) finally

try catch (exception $e) finally

// continue execution

echo "hello world\n";

?>

返回資料

0.2

first finally.

caught exception: division by zero.

second finally.

hello world

丟擲異常

<?php

class myexception extends exception

class test catch (myexception $e)

} catch (exception $e)

}}$foo = new test;

$foo->testing();

?>

以上會輸出

string(4) "foo!"
static 【後期靜態繫結】 self 【當前呼叫】

使用 self:: 或者 __class__ 對當前類的靜態引用,取決於定義當前方法所在的類:

self:: 用法

<?php

class a

public static function test()

}class b extends a

}b::test();

?>

以上會輸出

astatic:: 簡單用法

<?php

class a

public static function test()

}class b extends a

}b::test();

?>

以上會輸出

b後期靜態繫結的解析會一直到取得乙個完全解析了的靜態呼叫為止。另一方面,如果靜態呼叫使用 parent:: 或者 self:: 將**呼叫資訊。

<?php

class a

public static function who()

}class b extends a

public static function who()

}class c extends b

}c::test();

?>

以上會輸出 ac

c

C 學習(一) 類與物件

大二時學校開過物件導向程式設計 c 語言 的課,使用的是清華大學出版社,李愛華 程磊主編的教材。近兩年在學習和專案中一直使用c,對於c 已經忘記得差不多了。如今大四畢業之際開始學習qt開發上位機,需要用到c 使用原教材再次學習一次。類與物件是c 中兩個基本的概念。可以理解類是資料型別,物件是類定義的...

類與物件(一)

類和物件 類是具有相同特徵和行為的物件的抽象定義,客觀存在的具體事物都是物件,物件是類的例項 舉個栗子,車是個類,具體的車 寶馬,賓士等等屬於類的例項是物件,特徵 外觀,效能,高度等等屬於字段屬性,行為 轉向,倒車等等屬於方法 類的定義 舉個栗子,乙個遊戲裡是不是有很多boss,這些boss就具有一...

類與物件 一

對具體物件進行概括,抽出一類物件的公共性質並加以描述的過程 資料抽象 int hour,int min 行為抽象 功能抽象 showtime settime 封裝的意義 公共許可權 public 類內可以訪問 類外可以訪問 保護許可權 protected 類內可以訪問 類外不可以訪問 私有許可權 p...