關於繼承與重寫

2021-07-13 06:04:39 字數 1674 閱讀 2930

<?php

header("content-type:text/html;charset='utf-8'");

/*繼承,它是指建立乙個新的派生類,從乙個或多個先前定義的類中繼承資料和函式,

而且可以重新定義或加進新資料和函式,從而建立了類的層次或等級。說的簡單點就是,

繼承性是子類自動共享父類資料結構和方法的機制,

在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是資訊組織與分類的行之有效的方法,

它簡化了物件、類的建立工作量,增加了**的可重性。採用繼承性,提供了類的規範的等級結構。

通過類的繼承關係,使公共的特性能夠共享,提高了軟體的重用性。

php是單繼承,也就是說,乙個類只能直接從乙個類中繼承資料,

*///定義乙個「人類」作為父類

class person

//這個人可以說話的方法, 說出自己的成員屬性,

function say()

}/*//定義乙個子類「學生類「使用」extends」關鍵字來繼承」人」類

class student extends person

}$s1 = new student('小紅','20','女');

echo $s1->say();

*//*

人類裡面「說話」的方法裡面說出的是「person」類裡面的屬性, 而「student」類對「person」類進行了擴充套件,

又擴充套件出了幾個新的屬性,如果使用繼承過來的「say()」說話方法的話,只能說出從「person」類繼承過來的那些屬性,

那麼新擴充套件的那些屬性使用這個繼承過來的「say()」的方法就說不出來了,那有的人就問了,我在「student」這個子類中再定義

乙個新的方法用於說話,說出子類裡面所有的屬性不就行了嗎?一定不要這麼做, 從抽象的角度來講,

乙個「學生」不能有兩種「說話」的方法,就算你定義了兩個不同的說話的方法,可以實現你想要的功能,

被繼承過來的那個「說話「方法可能沒有機會用到了,而且是繼承過來的你也刪不掉。這個時候我們就要用到覆蓋了。

雖然說在php裡面不能定義同名的方法, 但是在父子關係的兩個類中,我們可以在子類中定義和父類同名的方法,

這樣就把父類中繼承過來的方法覆蓋掉了。

*/class student extends person

//這個學生學習的方法

public function study()

//這個學性可以說話的方法, 說出自己所有的屬性,覆蓋了父類的同名方法

public function say()

}/*構造方法在子類中如果沒有宣告的話,也可以使用父類中的構造方法,如果子類中重新定義了乙個構造方法也會

覆蓋掉父類中的構造方法,如果想使用新的構造方法為所有屬性賦值也可以用同樣的方式。

*//*

子類訪問自己的屬性,需要再去在類外定義,然後去呼叫

$s1 = new student('八蛋','15','男');

$s1->school='bawei';

$s1->say();

$s1->study(); //呼叫子類自己的方法

*///更直接的是在子類中重寫構造方法,繼承原有的父類方法,再加上自己的,

$s1 = new student('八蛋','15','男','beida');

$s1->say();

繼承與方法重寫

1.從已有的類中派生出新類,新的類能吸收已有類的資料屬性和行為,並且擴充套件新的能力。2.繼承是物件導向的三大特徵之一。封裝,多型 修飾符 class 子類 extends 父類 1.增強 的復用性 復用的優點 1.簡化 2.一處修改,處處修改 2.簡化了邏輯 3.降低耦合性,提高可維護性 1.繼承...

繼承與方法的重寫

1 父類 package com.wyq.study public class car public string getcartype public void setcarno string carno public string getcarno public car public car st...

python 繼承 多繼承與方法重寫(二)

class person def init self,name,age,weight self.name name self.age age self.weight weight def talk self print s is talking i am d 歲 體重是 d 了 self.name,...