PHP extends 繼承測試

2021-08-21 18:47:22 字數 1630 閱讀 9917

官網資訊:乙個類可以在宣告中用 extends,關鍵字繼承另乙個類的方法和屬性。php不支援多重繼承,乙個類只能繼承乙個基類。

被繼承的方法和屬性可以通過用同樣的名字重新宣告被覆蓋。但是如果父類定義方法時使用了 final,則該方法不可被覆蓋。可以通過 parent:: 來訪問被覆蓋的方法或屬性。

當覆蓋方法時,引數必須保持一致否則 php 將發出 e_strict 級別的錯誤資訊。但建構函式例外,建構函式可在被覆蓋時使用不同的引數。

子類在繼承父類後,會擁有父類的屬性和方法

test_a.php

<?php

class test_a

}

test_b.php

<?php

require_once 'test_a.php';

class test_b extends test_a

public function call_b()

public function get_a()

}

測試

test.php

<?php

require_once 'test_b.php';

require_once 'test_a.php';

//例項化物件test_b

$b = new test_b();

//呼叫物件test_a中的成員方法get_a

$b->get_a();//繼承了父類允許繼承的方法

//給物件test_a中的成員屬性賦值

$b->name_a=1;//繼承了父類允許繼承的屬性

//呼叫物件test_b中的成員方法get_b

$b->get_b();

//呼叫物件test_b中的成員方法call_b

$b->call_b();

//呼叫物件test_b中的成員方法get_pa

$b->get_a();//在子類方法get_a()中呼叫父類的get_a()方法

//結果

/*test_a

get test_b

call test_b

test_a

^^^^test_b->get_pa()*/

//例項化物件test_a

$a = new test_a();

//呼叫物件test_a中的成員方法get_a

$a->get_a();

//給物件test_a中的成員屬性賦值

$a->name_a=1;

//呼叫物件test_b中的成員方法get_b

//$a->get_b();

//呼叫物件test_b中的成員方法call_b

//$a->call_b();

//結果

/** test_a

* 報錯:call to undefined method test_a::get_b()

* 原物件的呼叫可以

* $a->get_a();

* $a->name_a=1;

* 物件test_b的無法呼叫

* $a->get_b();

* $a->call_b();

* */

golang struct繼承測試

記錄下golang struct的繼承關係 package main import fmt func main type a struct type b struct func a a afunc func a a bfunc func b b afunc func b b cfunc func t...

測試中使用繼承,減少重複寫註解

繼承的語句格式 class 子類名 extends 父類名 class 父類 class 子類 extends 父類 先編寫乙個測試父類basetests,新增 runwith springrunner.class 註解 springboottest 註解 runwith springrunner....

繼承(單繼承 多繼承 菱形繼承 虛繼承)

一 單繼承 單繼承是一種 乙個子類只有乙個直接父類 的繼承關係。二 多繼承 多繼承是一種 乙個子類有兩個或兩個以上直接父類 的繼承關係。三 菱形繼承 菱形繼承由兩個 或以上 單繼承,乙個多繼承構成,結構如下 顯然,上例中assistant類多繼承了student和teacher兩個類,而studen...