zoukankan      html  css  js  c++  java
  • php 面向对象三大特征

    /**
    燕十八 公益PHP培训
    课堂地址:YY频道88354001
    学习社区:www.zixue.it
    **/

    <?php
    /*************************************************************
    面向对象三大特征:
            1、封装
            2、继承
            3、多态
    **************************************************************/

    /*--------------------------------------------------------------
    封装:
            对于一个对象,对外界开发一个接口
            调用接口时,内部进行操作,不需要外界知道
            隐藏了内部的一些实现细节
    权限修饰符:
            作用:用来说明 属性/方法的权限特点
            写在 属性/方法 前面
     三个修饰符:
            private         私有的,保护最严
            protected     保护的
            public           公共的,保护最松
     疑问?
            public   修饰的属性/方法,可以在哪儿访问?
                    答:在任意位置都可以访问 类外
            protected 修饰的属性/方法,可以在哪儿访问?
                    答: 不能在类外调用
                            在类内调用
                            和子类中调用
            private 修饰的属性/方法,可以在哪儿访问?
                    答: 不能在类外调用
                            只能在类内访问
        
                 private        protected      public
    本类        V                   V                  V
    子类        X                   V                  V
    外部        X                   V                  V

        在Java中,如果public/private/protected都不写
    默认friendly
        在PHP中,如果public/private/protected都不写
     默认public
    ---------------------------------------------------------------*/

    class Human{
        private $money = 1000;
        //访问 $money 的接口
        public function getMoney(){
           return $this->money;
        }
        //有些函数不能被外界访问 只能在类的内部访问
        private function touchi(){
            echo '小时候偷吃了一块肉';
        }
    }

    $a = new Human();
    echo $a->getMoney();


    /*--------------------------------------------------------------
     继承:
    语法:extends
        子类 extends 父类{
        }
    注意点:
        1、子类 只能继承 一个父类
        2、public protected 可以继承,并拥有访问和修改的权限
        3、private 可以继承,但没有访问和修改的权限
        4、构造函数可以继承
        5、如果子类也声明构造函数,则父类构造函数被覆盖
        6、子类的方法可以访问父类非私有的属性
        7、父类的方法不能访问子类的属性
     
     构造方法的继承:
        new 子类();
        只会执行子类的构造方法;

    重写:
        1、方法名 参数一样
        2、权限不变或扩大

      子类调用父类的方法:
        parent::方法名();
    --------------------------------------------------------------*/
    class Human{
        private $height=170;
        private $name='Human';
        public function __construct(){
            echo 'Human ............<br />';
        }
        public function cry(){
            echo $this->name,'  Cry............<br />';
        }
    }

    class Stu extends Human{
        private $name='Sut';
         public function __construct(){
             parent::__construct(); //当子类重写了父类的构造函数 要显示调用
            echo 'Stu ............<br />';
        }
        public function cry(){ //重写 覆盖[override]
            parent::cry(); // 调用父类函数
            echo $this->name,' Cry............<br />';
        }

        public function study(){
            echo 'good good study, day day up<br />';
        }
    }

    class Lawer extends Human{
        private $area = '经济案件';
        public function bianhu(){
            echo '当事人无罪<br />';
        }

    }

    $xiaozhang = new Stu();
    $xiaozhang->cry();*/
    /*
    $zhoukou = new Human();
    $zhoukou->cry();

    $xiaozhang = new Stu();
    $xiaozhang->study();
    $xiaozhang->cry();

    $lise = new Lawer();
    $lise->bianhu();
    $lise->cry();



    /*--------------------------------------------------------------
    多态:
        1、按php本身的特点,不检测类型,本身就是多态
        2、但是在PHP5.3以后,引入了对于对象类型的参数
            检测,注意:只能检测对象所述的类
     反思:
         1、只抽象的声明父类,具体的工作由子类对象
         来完成,这样不同的子类对象完成,有不同的
         特点
    --------------------------------------------------------------*/

  • 相关阅读:
    无题
    晒新玩具
    PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
    Java
    [转]const 与 readonly知多少
    Watin 杂谈
    WCF
    [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!
    【转】单链表逆序
    桥梁模式和适配器模式的区别
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2764529.html
Copyright © 2011-2022 走看看