面向对象的特性:继承性

1、继承与扩展函数

1.子类使用extends继承父类,子类能够将父类全部内容继承,以下:
//多层继承
    class Person {
        var $name;
        var $age;
        var $sex;
        function __construct(){
            
        }
        function say(){
            
        }
        function eat(){
            echo "1111";
        }
        function run(){
            
        }
    };
    class Student extends Person {
        var $school;
        function __construct(){
            
        }
        function study(){
            
        }
    };
    class Teacher extends Student {
        var $gz;
        function teach(){
            
        }
    };
    $stu=new Student;
    $stu->eat();
    /1111

2.private没法继承给子类,以下:this

class Person {
        private $name="liu";
        var $age;
        var $sex;
        function __construct(){
            
        }
        function say(){
            echo $this->name;
        }
        function eat(){
            echo "1111";
        }
        function run(){
            
        }
    };
    class Student extends Person {
        var $school;
        function __construct(){
            
        }
        function study(){
            
        }
    };
    class Teacher extends Student {
        var $dw;
        function teach(){
            echo $this->name;
        }
    };
    $teacher=new Teacher;
    $teacher->say();//liu 只是子类引用继承了父类的say()
    $teacher->teach();//error

3.protected保护权限,只能本身和子类使用,外部没法读取,以下:spa

class Person {
        private $name="liu";
        protected $age=10;
        var $sex;
        function __construct(){
            
        }
        function say(){
            echo $this->age;
        }
        function eat(){
            echo "1111";
        }
        function run(){
            
        }
    };
    class Student extends Person {
        var $school;
        function __construct(){
            
        }
        function study(){
            
        }
    };
    class Teacher extends Student {
        var $dw;
        function teach(){
            echo $this->age;
        }
    };
    $teacher=new Teacher;
    $teacher->say();//10
    $teacher->teach();//10

4.public(默认)公开权限,全部位置均可用,再也不重复举例,各权限以下图:
图片描述code

2、继承中的重载/覆盖blog

1.强类型语言中重载:方法名相同,参数或参数个数不一样
2.弱类型语言理解为覆盖:同一类中同名方法后覆盖前
3.弱类型中的重载:子类里能够写与父类同名的方法,即方法的扩展(接口、多态)
4.调用类的方法Person::say();
5.调用父类(被覆盖)的方法(默认关键字)parent::say();
6.__construct()也能够覆盖,但最开始必须调用父类构造函数,以下:
function __construct($name,$age,$sex,$school){
            //先调用父类构造方法,不然父类初始化后,子类不变
            parent::__construct($name,$age,$sex);
            $this->school=$school;
        }
7.权限:子类权限只能>=父类权限,即public > protected > private
相关文章
相关标签/搜索