php类 属性和方法的关系小白入门_php使用指南

一 . 属性关系1 . public属性:在类的外部和内部都可以调用 被继承能够重构2 . protected属性:在类的内部可以调用外部不能可以被继承并且重构3 . private属性:只有在类的内部调用 不能被继承4 . static属性:类的内部和外部都能调用 内部调用方法(self::属性变量) 外部调用方法(类名::属性变量) 二 .

php类 属性和方法的关系小白入门

一 . 属性关系

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

php类 属性和方法的关系小白入门_php使用指南

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方法不能被重写。

?>
海计划公众号
(0)
上一篇 2020/03/30 16:12
下一篇 2020/03/30 16:12

您可能感兴趣的内容

  • js事件冒泡和事件捕获详解指南攻略_js事件入门指南

    Javascript与HTML之间的交互是通过事件实现。一、事件流事件,是文档或浏览器窗口中发生的一些特定的交互瞬间。事件流,描述的是页面中接受事件的顺序。IE9,chrome,Firefox,Opera,Safari均实现了DOM2级规范中定义的标准DOM事件,而IE8和IE8以下版本仍然保留专有的事件处理方式。事件冒泡事件冒泡是由IE开发团队提出来的,即

    2020/04/06
  • node.js含有%百分号时,发送get请求时浏览器地址自动编码的问题基础知识教程_请求入门基础

    目前浏览器会对地址,进行编码,比如这个文件名:sales\报表.png在发到后台时,会自动编码成:/file/view/sales/%E6%8A%A5%E8%A1%A8.png在node.js会自动反编码成:sales\报表.png不过如果文件名中含有%百分号,编码过程则会出现问题,如sales\报%表.png发送到node.js接收到的自动编码数据:/fi

    Web前端 2020/03/24
  • Nginx入门指南菜鸟教程下载_nginx菜鸟教程下载

    简介轻量级HTTP服务器事件驱动,异步非阻塞反向代理与负载均衡高并发,低内存占用安装Nginx# Ubuntu
    apt-get install nginx
    # Centos
    yum install nginx常用命令启动nginx
    停止# 立即停止
    nginx -s stop
    # 从容停止
    nginx -s quit
    # 杀死进程
    killall nginx

    2020/03/20
  • React 中 setState()详细解读小白指南_组件基础知识教程

    对于 setState() 相信伙伴们都用过,它是 React 官方推荐用来更新组件 state 的 API,但是对于 setState() 你真的了解吗?且待我慢慢详聊一番。setState() 官方用法指南语法1: setState(updater[, callback])updater:函数类型,返回一个更新后的 state 中的状态对象,它会和 st

    2020/03/26
  • css实用小技巧使用说明css常用技巧和经验总汇_css菜鸟指南

    如何清除图片下方出现几像素的空白间隙?方法1:img{display:block;}方法2:img{vertical-align:top;}除了top值,还可以设置为text-top | middle | bottom | text-bottom,甚至特定的和值都可以方法3:#test{font-size:0;line

    2020/04/03
  • React使用Hooks与Context替代Redux状态管理指南攻略_状态菜鸟指南

    React Hooks 在 2018 年年底就已经公布了,正式发布是在 2019 年 5 月,关于它到底能做什么用,并不在本文的探讨范围之内,本文旨在摸索,如何基于 Hooks 以及 Context,实现多组件的状态共享,完成一个精简版的 Redux。初始化一个 React 项目yarn create create-app hooks-context-bas

    2020/03/26
  • 艺术字体指南攻略_在线艺术字体在线生成器

    艺术字体指南攻略 官方网址:http://www.akuziti.com/ 简介描述:在线艺术字体在线生成器 给大家分享一个可以根据你输入内容生成上百种艺术字体的网站,平时我们自己…

    2020/03/06
  • 7款最好的笔记工具零基础入门_工具入门指南

    编程容易产生挫折,即使作为一种业余爱好也可能是这样。建立一个网页,手机APP或桌面应用都是个很大的工程,好的记笔记技能是让这个工程井然有序的关键,也是克服压力、绝望和倦怠的好方法。但是大多数笔记应用的设计并不是以程序员作为目标受众,这些程序可能会让使用者用起来很难受,甚至完全放弃这些工具。这就是为什么我们为你找来了这些最好的笔记工具。快来看看——你会爱上它们

    2020/03/22
  • alita基础知识_React Native代码转换成微信小程序代码的转换引擎工具

    alita基础知识 官方网址:https://areslabs.github.io/alita GitHub:https://github.com/areslabs/alita 简…

    2020/03/06
  • Js中this指向问题(函数的调用方式)小白攻略_this入门基础

    在ES6之前,函数内部的this是由函数的调用方式决定的函数调用var age = 18;
    var p ={age : 15,say : function(){console.log(this.age)}
    }
    var f1 = p.say;
    f1();这时是函数调用(是由window调用,即f1() = window.f1())。 此时结果为18,因为thi

    2020/03/20
  • 前端部署和提效:从静态到node再到负载均衡小白入门_部署小白攻略

    前言相信很多前端同学对 vue 或 react 的开发很熟悉了,也知道如何去打包生成一个生产环境的包,但对于生产环境的部署可能有些同学了解比较少。小公司可能都是后端帮忙部署了,大公司会有专门的运维同学部署,对于生产环境的部署工作有些同学接触的不多,所以这次来分享和总结下前端项目部署相关的实战经验:从静态站点的部署,到 node 项目的部署,再到负载均衡的部署

    2020/03/20
  • Videofk基础知识_免费在线视频嗅探下载器

    Videofk基础知识 官方网址:https://www.videofk.com/ 简介描述:免费在线视频嗅探下载器 “Videofk”是一款支持绝大多数视频媒体网站的在线视频嗅探…

    2020/03/11
  • CSS如何将图像转换为模糊图像?菜鸟攻略_图片教程视频

    CSS如何将图像转换为模糊图像?菜鸟攻略 在CSS中,可以使用filter属性来模糊处理图像;filter属性用于将图像转换为模糊图像。该属性主要用于设置图像的视觉效果。 语法: …

    2020/03/20
  • jQuery的淡入淡出基础知识入门_jquery使用说明

    在jQuery中的一些特效中,可以通过四个方法来实现元素的淡入淡出,这四个方法分别是:fadeIn()、fadeOut()、fadeToggle() 以及 fadeTo(),下面为分别为大家介绍各个方式的使用。jQuery fadeIn() 用于淡入已经被隐藏的元素,例子:

    <met

    2020/03/26
  • 浅谈js自记忆函数小白攻略_js知识基础教程

    最近阅读《JavaScript忍者秘籍》看到了一种有趣的函数:自记忆函数。简介何为自记忆函数?书中提到:记忆化(memoization)是一种构建函数的处理过程,能够记住上次计算结果通过这句话可以得出,自记忆函数其实就是能够记住上次计算结果的函数。在实现中,我们可以这样进行处理:当函数计算得到结果时,就将该结果按照参数存储起来。采取这种方式时,如果另外一个调

    2020/04/03
  • vue不兼容安卓6.0以下版本,导致页面白屏基础知识_兼容菜鸟教程网

    最近开发发现一个问题,貌似vue是不支持安卓6.0以下版本的安卓机的:但是最近需求又碰到了,就不得不解决这个问题,经过网上一大堆没用的查询之后,并没有找到真正可行的解决方案,于是使用vconsole在白屏的手机上打印了错误信息:于是又一串百度,找到问题原因可能是两点,1是部分低版本安卓机不支持es6的语法,(甚至少量es5的语法也不支持)以及不支持路由懒加载

    2020/03/31