zoukankan      html  css  js  c++  java
  • 4__面向对象的PHP之作用域

    1.  字段作用域

    PHP支持的字段作用域有: public、private、protected、final、static

    (1)public

      访问方式: 公共字段可以由相应的对象直接操作和访问。

       注意事项:在OOP中并不鼓励使用公共字段,因为直接访问使得类无法很容易地完成某种数据验证。

    (2)private

          访问方式:指定为私有的字符按不能由类实例化的对象直接访问,也不能由子类使用。

          注意事项:私有字段必须通过公共接口来访问,这符合OOP的封装原则。

    (3)protected

           与函数通常需要只在内部使用的变量一样,类也可以包含只在内部使用的字段。这些字段称为保护字段。

           访问方式: 在继承的子类中也可以访问和操作保护字段,这是私有字段所没有的特性。

           作用: 如果希望拓展类,就应当使用保护字段而不是私有字段。

    (4)final

           访问方式:在为字段设置final作用域时,将阻止在子类中覆盖这个字段。

    (5)static

           访问方式:提供所有类共享的字段,这些字段与所有类的实例有关,但不能由任何特定的对象调用。

    2. 方法作用域

    PHP支持6种方法作用域:public、private、protected、abstract、final、static

    (1)public

           访问方式:公共方法可以在任何位置任何时间访问。

    (2)private

           访问方式:标记为private的方法只能在类内部使用,不能由实例化的对象调用,也不能由类的子类使用。

          作用:  一般这类方法只用作作为其他方法的“辅助方法”。

    (3)protected

          访问方式: 标记为protected的方法只能在该类及其子类中使用。

          注意事项: 不能再类外部调用具有protected作用域的方法。

    (4)abstract

          访问方式: abstract方法只在父类中声明,在子类中实现。

    (5)final

          访问方式: 标记为final的方法可以防止被子类覆盖。

    (6)static

          访问方式:提供所有类共享的方法,这些方法与所有类的实例有关,但不能由任何特定的对象调用。

    <?php
    
    /**
      * 类的概念
      */
    class Staff {
    	public $name;
    	private $title;
    	protected $wage;
    	// final $ssn; 在php5.4中已不可使用,只能修饰类和方法
    	const PI = '3.14159265'; // 常量
    	public function clockIn() {
    		echo "Member $this->name clocked in at " . date ( "h:i:s" ) . "<br/>";
    	}
    	public function clockOut() {
    		echo "Member clocked out at " . date ( "h:i:s" ) . "<br/>";
    	}
    }
    $employee = new Staff ();
    
    // 在类外部操作共有字段,不推荐此使用方法
    $employee->name = "yeahwell";
    $name = $employee->name;
    echo "新建的雇员名为$name<br/>";
    // $employee->name = "123456"; //无数据验证
    
    // 使用常量
    echo "π为" . Staff::PI . "<br />";
    
    // 在类外部调用共有方法
    $employee->clockIn ();
    // Staff::clockOut ();
    /*
     * php5.4.5环境下将有此异常 Strict Standards: Non-static method Staff::clockOut() should
     * not be called statically in D:\YWProgramFiles\Programer\Server\Apache
     * Software
     * Foundation\Apache2.2\htdocs\ZendWorkspace\PHPManual\oop\oop_work_domain.php
     * on line 41 Member clocked out at 05:16:47
     */
    
    ?>



    作者:沙漏哟
    出处:计算机的未来在于连接
    本文版权归作者和博客园共有,欢迎转载,请留下原文链接
    微信随缘扩列,聊创业聊产品,偶尔搞搞技术
  • 相关阅读:
    python-生成器
    python—迭代器
    python—递归函数
    CentOS关闭防火墙
    OpenHCI
    USB电源管理
    USB相关的网络资料
    USB Packet Types
    USB描述符概述
    Core Java Volume I — 1.2. The Java "White Paper" Buzzwords
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5226069.html
Copyright © 2011-2022 走看看