领域棋牌官网最新版本 当前位置:首页>领域棋牌官网最新版本>正文

领域棋牌官网最新版本

发布时间:2018-11-17

原标题:PHP中public,private,protected,abstract等关键字用法详解

后羿掌握的大道却是射日大道可想而知威能是多么的可怕,号称洪荒太阳之子,妖族帝皇之后十只金乌都被后裔给射杀了九只,他可是巫族当中数一数二的大巫,真正能完全凌驾在后羿之上的大巫目前只有一个那就是战神刑天。

快三买大小单双技巧

政斧自然也是听到了这个消息,此时,那政斧首脑正在和自己的一帮幕僚在紧急磋商此事。他们也没想到事情的结果会向着这个方向演化,那首脑的脸上已经看不出有任何的笑容来了。
看着没入森林黑暗中的二人,鬼斗罗向胡列娜道:“知道我为什么要留下他么?”

风魂躲在暗处,心想这女人从背后看应该长得不错,怎么笑起来声音这么难听?当然,这并不是他所要关心的,事实上,他已暗暗取出了玄元砖,想要趁朱孺子与这女人做那种事的时候偷袭他。

PHP中常用的关键字

 在PHP中包含了很多对函数和类进行限制的关键字,常用的通常有abstract,final,interface,public,protected,private,static等等,下面我们就将对这些进行分析整理各个的用法。

变量与方法的关键字public,private,protected

public的权限最大,既可以让子类使用,也可以支持实例化之后的调用,

protected表示的是受保护的,访问的权限是只有在子类和本类中才可以被访问到

private 表示的是私有,只能够是在当前的类中可以被访问到

<?php

//
/**
* Define MyClass
*/
class MyClass
{
    public $public = "Public";
    protected $protected = "Protected";
    private $private = "Private";

    public function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
    protected  function pro_test(){
        var_dump(1);
    }
}

$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
//echo $obj->protected; // 这行会产生一个致命错误
//echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private
$obj->pro_test();//直接报错
?>

变量与方法的关键字static 

 static的作用就是能够实现值或者方法在类中不需实例化的情况下调用,同时static修饰的变量具有与值存储的功能,例如我们不使用static运行的结果如下:

<?php
function test(){
    $var=1;
    echo $var."</br>";
    $var++;
}
test();// 1
test();// 1
test();// 1
?>

 

 如果我们给变量加上static那么就会变成这样

<?php
function test(){
    static $var=1;
    echo $var."</br>";
    $var++;
}
test();// 1
test();// 2
test();// 3
?>

 

 这里可能不能够体会到PHP这样做的好处,那么我们就先来假设一下读者也熟悉JS,在JS中是没有static这个关键字的,所以如果我们要来实现一个具有能够保存每一次程序运算结果作为下一次运算的依据的一个程序我们需要这样来写。

    var glo=0;
    function test(){
        glo++;
        document.writeln(glo);
    }
    test();
    test();
    test();

 

这样就会把glo泄漏到全局变量中,如果生成的变量比较多,就会导致内存泄露(内存泄漏所指代的就是变量占用过多的内存空间没有别释放)

<script>
    var glo=0;
    function test(){
        glo++;
        document.writeln(glo);
    }
    test();// 1
    test();// 2
    test();// 3 
</script>

 

所以相比于在没有定义static的语言中,它具有一个优势是保持变量,不泄露内存,也不容易导致全局变量被误用(因为作用域不在全局)

$age=0;
$age++;

function test1() {
    static $age = 100;
    $age++;
    echo $age."</br>";
}

function test2() {
    static $age = 1000;
    $age++;
    echo $age."</br>";
}

test1(); // 101
test2(); // 1001

 

 class与方法的关键字final

final只能够用来修饰class与function,使用了final之后就不能够被继承,例如如下的代码就会直接报错

 class BaseClass {
     public $public = "Public";
     function test() {
        echo "BaseClass::test() called
";
    }

    final public function moreTesting() {
        echo "BaseClass::moreTesting() called
";
    }
}

class ChildClass extends BaseClass {
    public function moreTesting() {
        echo "ChildClass::moreTesting() called
";
    }
}

特殊关键字interface,abstract

interface的意义在于规范编程的风格,设想一下就是如果是实现了一个接口那么我们在使用这个接口类的时候就必须要实现里面的方法,起到了统一命名的作用。

class是可以多继承接口的,接口与接口之间的单继承是通过extends来实现的,class与接口之间的关系确立是通过implements

示例代码:

 

<?php

interface testA{
    function funcA();
}
interface testB{
    function funcB();
}
interface testC extends testA {
    function funcC();
}
class run implements testC ,testB {
    public function funcA()
    {
        // TODO: Implement funcA() method.
    }
    public  function funcB()
    {
        // TODO: Implement funcB() method.
    }
    public function funcC()
    {
        // TODO: Implement funcC() method.
    }
}
?>

 abstract的作用跟interface其实是一样的,但是在interface中所有的方法都是必须要实现的,但是在abstract修饰的类中,可以有一个或者是多个的abstract修饰方法,所以我们可以这样理解,interface就是abstract的一种特殊情况(当所有的方法都是抽象方法,都是必须要实现的)。abstract有以下的这些特征:

1. 只要类中有至少一个方法使用了abstract关键字,那么这个类是abstract,要加上相应的关键字

2. 抽象方法,只有方法的声明部分,没有方法体。

但是在我看来,abstract在实际的应用中有这样的几种场景

1. 多人编程的时候规范公共部分的命名规则(不做任何说明,原理跟interface一样)

2. 实现不让父级直接实例化使用

样式代码如下:

 

<?php

abstract class shopping
{
    public function buy()
    {
        echo "buy";
    }

    public function loan()
    {
        echo "loan";
    }
}

class leslieBuy extends shopping
{

}

//$test1=new shopping;//直接语法错误
$leslieSie = new leslieBuy;
$leslieSie->loan();//打印出loan
?>

 

编辑:纯扁秉董

发布时间:2018-11-17 11:01:44

当前文章:http://radiokey.biz/gou/vvkpr.html

联众德州扑克万能豆 亲朋棋牌游戏官方下载 亲朋之星官方版 上海麻将游戏大厅 手机棋牌游戏app网 网络棋牌举报 下分兑换现金的捕鱼 游戏拖拉机下载

61974 59087 99844 70548 75997 8644881100 90079 37917

责任编辑:董纯平成

随机推荐