关闭

php类 属性和方法的关系

时间: 2019-03-16阅读: 840标签: php

一 . 属性关系

1 .  public属性:在类的外部和内部都可以调用  被继承能够重构

2 .  protected属性:在类的内部可以调用外部不能可以被继承并且重构

3 .  private属性:只有在类的内部调用 不能被继承

4 .  static属性:类的内部和外部都能调用  内部调用方法(self::属性变量) 外部调用方法(类名::属性变量)

 

二 . 方法关系

1 . public方法:在类的外部和内部都可以调用 可以被继承

2 . protected方法:在类的内部可以调用外部不能 可以被继承

3 .  private方法:只有在类的内部调用 不可以被继承

4 . static方法:外部内部都可以调用  内部调用方法($this->方法名) 外部调用发法(类名::方法名)

 

三 . final 说明

1 . final---用于类、方法前。

2 . final类---不可被继承。

 3 . final方法---不可被覆盖。

 

 

四 . 下面是自己写的测试demo

<?php
    class MyClass1
    {
        //声明一个公共的变量
        public $public = ‘Public‘;
        //声明一个受保护的变量
        protected $protected = ‘Protected‘;
        //声明一个私有的变量
        private $private = ‘Private‘;
        function printAll()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }

    //实例化对象
    $obj = new MyClass1();
    echo $obj->public;     //正常输出: Public
    echo $obj->protected;  //报错:Cannot access protected property
    echo $obj->private;    //报错:Cannot access protected property
    $obj->printAll();      //正常输出 Public Protected Private

    /**
     * DEFINE MyClass2
     * Date 2019-3-14
     * Author QQ28281633
     */

    class MyClass2 extends MyClass1{
        // 可以对 public 和 protected 进行重定义,但 private 而不能
        public $public = ‘Public2‘;
        protected $protected = ‘Protected2‘;
        static $a = 1;

        function printAll(){
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }

    $obj2 = new MyClass2();

    echo $obj2->public; // 这行能被正常执行
    echo $obj2->private; // 未定义 private
    echo $obj2->protected; // 这行会产生一个致命错误
    $obj2->printAll(); // 输出 Public Protected2 和 Undefined



    /**
     *DEFINE MyClass3
     * 类中方法的访问控制
     */

    class MyClass3{
        //声明一个共有的构造函数
        public function __construct(){}

        //声明一个共有的方法
        public function myPublic(){
            return ‘myPublic‘;
        }

        //声明一个受保护的方法
        protected function myProtected(){
            return ‘myProtected‘;
        }

        //声明一个私有的方法
        private function myPrivate(){
            return ‘myPrivate‘;
        }

        //检查输出所有方法
        public function printAll(){
            echo $this->myPublic();
            echo $this->myProtected();
            echo $this->myPrivate();
        }
    }

    $obj3 = new MyClass3;
    echo $obj3->myPublic();     //正常执行
    echo $obj3->myProtected(); //报错
    echo $obj3->myPrivate();  //报错
    $obj3->printAll(); //三个方法在类的内部均可正常执行


    class Tests
    {
        public function test() {
            $this->testPrivate();
            $this->testPublic();
            $this->testStatic();
        }

        public function testPublic() {
            echo "1";
        }

        private function testPrivate() {
            echo "2";
        }

        public static function testStatic(){
            echo 3;
        }
    }

    $myFoo = new Tests();
    Tests::testStatic();
    $myFoo->test();

    /**
     * Class Math
     *  final 解释
     */
    class Math
    {
        public final function max(){
           echo 1;
        }
    }
    //声明类SuperMath 继承自 Math类
    class SuperMath extends Math
    {
        public final function max(){
            echo 2;
        }
    }
    //执行会出错,final方法不能被重写。

?>



站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/2394

关闭

高级PHP工程师所应该具备一些技能

很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的PHP工程师一些帮助。

5分钟理解依赖注入和控制反转

很多人不理解依赖注入和控制反转主要是不熟悉适用场景,其实在很多框架中我们说用到了 IoC 和 DI,实际上都是一回事,他实际上就是我们设计模式的一种:门面模式,也称外观模式。实际上,在去理解 依赖注入 和 控制反转 时,我们需要有两个概念。

对比 PHP 中 new static() 与 new self()

通过new static()与new self()都能产生实例对象,new static()是在PHP5.3版本中引入的新特性,本文对二者稍作对比。new self() 与 new static() 区别在于是否继承,如果没胡继承则二者效果相同,如果有继承,则self仍指向被定义时的类,而static则指向调用者的类。

PHP事务是什么?

不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。

解决php的单继承问题,trait的使用

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题

php 定时任务

google百度了下,PHP任务大体上可以分为三类,最近需要去定时请求数据,然后分析之后 指定相应的文本 通过socket广播给用户。具体的分析 制定文本的业务 不复杂。 使用curl 请求数据 。但是对于定时任务这一块怎么使用都不行。

PHP代码_PHP整洁之道

摘录自 Robert C. Martin的Clean Code 书中的软件工程师的原则 ,适用于PHP。 这不是风格指南。 这是一个关于开发可读、可复用并且可重构的PHP软件指南。并不是这里所有的原则都得遵循,甚至很少的能被普遍接受。 这些虽然只是指导,但是都是Clean Code作者多年总结出来的。

PHP 页面静态化技术,OB系列函数的使用

PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。

php后台运行以及定时任务的4种实现原理以及代码

后台任务在我们php编程中虽然用的不是很多甚至很多php程序员都没听过甚至觉得后台运行是不可能实现的,本人因为项目需求多次演变在这里分享给大家:写成网页浏览的形式打开即执行然后用http监控

php面向对象中static静态属性和静态方法的调用

关于它们的调用,需要弄明白了他们在内存中存放位置,这样就非常容易理解了。静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性)。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!