php 繼承

<?php
/*
繼承性
    1.面向對象的三大特性之一
    2.開放性,可擴充性
    3.增加代碼的重用性
    4.提高瞭軟件的可維護性
     
    php 使弱類型語言,沒有重載的概念
     
    子類中重載父類的方法
        子類可以聲明和父類相同的方法名,即子類覆蓋父類中同名的方法
        在子類中調用父類中被覆蓋的方法
            parent::方法名
              
    在子類中編寫構造方法,如果父類中也有構造方法,一定要調用父類中的構造方法
    註意:子類中重載的方法,不能低於父類中的訪問權限(子類可以放大權限,但不能縮小權限)
    */
    include "./Person.class.php";
     
    class Student extends Person{
        var $school;
         
        function __construct($name="name1",$age =20,$sex="女", $school){
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;
            $this->school = $school;
        }
         
        function study(){
            echo $this->age;
            echo $this->name.":我在{$this->school}學習<br>";
        }
         
        /*
            覆蓋父類的say(),子類中重載的方法,不能低於父類中的訪問權限(子類可以放大權限,但不能縮小權限)
            父類中是public function say(){}
            子類中變成瞭private function say(){}
            private function say(){
                echo "{$this->name}:我在{$this->school}學習呢,請不要打擾我<br>";
            }
            這時候會報錯Fatal error: Access level to Student::say() must be public (as in class Person
        */
         
        public function say(){
            parent::say();
            echo "{$this->name}:我在{$this->school}學習呢,請不要打擾我<br>";
        }
    }
     
    #$student = new Student;
    #$student->school="北京大學附屬中學";
    #$student->name="haha";
    #$student->age=32;
    #$student->study();
    #$student->say();
     
    $student2 = new Student("李會東",24,"男","北京大學");
    #echo $student2->school;
    $student2->say();
?>

 

You May Also Like