zoukankan      html  css  js  c++  java
  • php面向对象理解(一)

    常用的继承过程,以及对public、private、protected修饰符的理解:

    /*****************************父类********************************/
    /**
    * person父类
    */
    class person 
    {   
    
        public $name;       //共有属性在类的里面和外面都可以被访问,可以被子类继承
        public $age;
        public $sex;
        protected $myprotect;   //受保护属性,不能被外部访问,只能在类里面被访问,以及继承了本类的子类可以访问
        private $myprivate;     //私有属性,只能被本类的内部访问,不能被外部访问,也不能被子类继承访问
    
        public static $mystaticObj;  //全局静态变量,直接通过类方法访问
        /**
        * 构造方法
        */
        function __construct($name,$age,$sex)
        {
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
    
            $this->myprotect = "myprotect";
            $this->myprivate = "myprivate";
        }
    
        /**
        * 共有实例方法,可以被类的里面和外面访问,并且可以子类继承重写
        */
        public function personInfo() {  
            echo "姓名:".$this->name."
    "."年龄:".$this->age."
    "."性别:".$this->sex."
    "."myprotect:".$this->myprotect."
    "."myprivate:".$this->myprivate;
        }
    
        /**
        * 私有实例方法,可以被类的里面访问,但不能被类的外面访问,也不能被子类继承访问
        */
        private function mysecret() {
            echo "这是我的秘密,不能告诉你";
        }
    
        /**
        * 受保护实例方法,可以被类的里面访问,也可以被子类访问,但不能被类的外面访问
        */
        protected function myprotectfun() {
            echo "这是我的myprotectfun方法";
        }
    
        public static function share() {
            echo "静态方法,直接通过类名调用";
        }
    
        function __destruct() {
            echo "god damn,I die";
        }
    
    }
    
    /*****************************子类********************************/
    
    /**
    * 继承自person的子类
    */
    class student extends person
    {
        public $grade;
    
        function __construct($name,$age,$sex,$grade)
        {
            parent::__construct($name,$age,$sex);
            $this->grade = $grade;
        }
    
        public function personInfo() {
            parent::personInfo();
            echo "
    "."grade:".$this->grade."
    ";
    
            /*  结果:
    
                姓名:klp
                年龄:24
                性别:male
                myprotect:myprotect
                myprivate:myprivate
                grade:six
                这是我的子类myprotectfun方法
            */
    
            $this->myprotectfun();
        }
    
        protected function myprotectfun() {
            echo "这是我的子类myprotectfun方法";
        }
    
        public static function share() {
            echo "子类静态方法,直接通过类名调用";
        }
    }
    
    
    // $obj = new person("klp","26","male");
    // $obj->personInfo();
    // $obj->myprotect;   报错:Fatal error: Cannot access protected property person::$myprotect
    // $obj->mysecret();  /*报错:Fatal error: Call to private method person::mysecret() from context*/
    // person::share();  /*静态方法,直接通过类名调用*/
    
    $stu = new student("klp","24","male","six");
    $stu->personInfo();
    $stu->myprivate;   /*返回为空,但是不会报错*/
    student::share();  /*子类静态方法,直接通过类名调用*/
  • 相关阅读:
    python-socket1
    python-网络编程
    linux-常用指令3
    linux-vim/编辑器
    linux-常用指令2
    linux-常用指令1
    MySQL 练习题
    33 python 并发编程之IO模型
    32 python 并发编程之协程
    31 python下实现并发编程
  • 原文地址:https://www.cnblogs.com/Caersi/p/7409862.html
Copyright © 2011-2022 走看看