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."\n"."年龄:".$this->age."\n"."性别:".$this->sex."\n"."myprotect:".$this->myprotect."\n"."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 "\n"."grade:".$this->grade."\n";

        /*  结果:

            姓名: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();  /*子类静态方法,直接通过类名调用*/
时间: 2024-11-01 16:19:13

php面向对象理解(一)的相关文章

6、JAVA基础-二维数组 及 面向对象理解

1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}}; D:数据类型[][] 数组名 = {{...},{...},{...}}; (3)案例(掌握): A:二维数组的遍历 B:二维数组的求和 C:杨辉三角形 2:两个思考题(理解) (1)Java中的参数传递

java普通类、抽象类、接口、面向对象理解

1.面向对象编程: 面向对象编程的语言不止java一种,还有: simula 67(第一个面向对象语言,支持单继承和一定含义的多态和部分动态绑定): Smalltalk(第一个支持动态类型的语言,支持单继承.多态和动态绑定): EIFFEL(支持多继承.多态和动态绑定): C++(它的大部分基于类的特性继承自Simula.支持多继承.多态和部分动态绑定): C#(也支持单继承,与Java和C++等有很多类似之处): Python( [?pa?θ?n]是一种解释型.面向对象.动态数据类型的高级程序

面向对象理解

一.何为面向对象编程,这种编程理念和面向过程编程比较有什么优势? 面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为 二.面向对象编程的主要特点: 1.封装: 封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,

C++——OOP面向对象理解

从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论.先看这篇教程是怎么来讲述OOP的.它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差.这个把下面这段代码描述成是Hacker Solution.(这帮人觉得下面这叫黑客?我估计这帮人真是没看过C语言的代码) public cla

面向对象理解随笔

结构和类是并列的,都是创建对象的模板 修饰符 Struct 结构名 1.结构是值类型,类是引用类型 2.结构不能包含显式的的无参数构造函数,结构成员会自动初始化默认值,不能再声明时赋值初始化 3.不能有基类(不能Base) 不支持继承 4.声明了结构类型后,可以使用New 运算符创建构造对象,也可以不使用new.如果不适用New,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用 面向对象的四个特性: 封装:不会破坏原有数据,相当于把数据提取出来在相应的类中进行处理执行 继承:   通过

基础部分-c#基础-oop(面向对象理解)

1:面向对象三大特点:封装 继承 多态 封装:把项目按规则分为块,每个对象, 稳定可直接调用,不稳定需要修改的的属性方法,把稳定的一部分以Public或者 Private,封装起来 继承:一个对象(人),有某个方法(开飞机),另一个对象(人)刚好没有,在程序最简单的就是继承这个开飞机的方法 多态:一个对象(人),每个人都有相同的方法(睡觉),但是每个对象睡觉的方式不同,有的人还是一个人睡,有的人则还 有对象陪着睡 2:用面向对象的思维来编写一个MVC项目:(单身狗打lol)    面向对象基本就

Java 面向对象理解

Java 面向对象的三大特性 封装 比如我们想描述人的属性,可以把人的相关属性name,age...封装成一个人类 Person 类,这样我们就实现从基本数据(属性)到类的封装 我们也可以把一些常用的方法封装到一个类里,作为工具类,比如数据格式校验的方法, 时间格式转换的方法, 这样我们就实现从常用方法到类的封装 有些情况下,我们的数据结构比较复杂,在一个类中的属性中也会声明另一个类的声明, 或者声明一个类的集合作为属性                class Teacher{        

JAVA面向对象理解

做测试也挺久了,大学时没有认真学会java,现在各个企业对测试人员要求越来越高,掌握编程语言的已经成了必备的技能:自己也断断续续学了很多次java,但都没有好好得把java学好,在要面临跳槽时总觉得自己的简历上总是少些亮点.终于下定决心,每天抽出2个钟学习java,为了在以后的简历中可以写上懂得java. 一.面向对象 现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类.书桌.计算机.高楼大厦等.把解决问题的方式简单化,于是就会思考这些对象是由哪些部分组成.通常对象分两部分:静

面向对象理解,封装、继承、多态知识总结

面向对象 类就是对象在程序中的模拟实现,类决定了对象将要拥有的属性和行为 类是一种数据类型,用户自定义的数据类型 类的组成:字段.属性.方法.构造函数等 对象时具体的,是类的具体实例.对象具有属性(特征)和方法(行为) 一.面向对象的三大特征: 封装 类和对象本身就是封装的体现 (1)属性封装了字段 (2)方法的多个参数封装成了一个对象 (3)将一堆代码封装到了一个方法中 (4)将一些功能封装到了几个类中 (5)将一些具有相同功能的代码封装到了一个程序集中(dll.exe),并且对外提供统一的访