php边界修饰符,php中的访问修饰符、方法修饰符、接口 - Go语言中文社区

php边界修饰符,php中的访问修饰符、方法修饰符、接口


访问修饰符

修饰符

描述

public(公有的)

可以在类的内部和外部访问

private(私有的)

只能在类的内部访问

protected(受保护的)

在类的内部和子类中访问(在整个继承链上访问)

方法修饰符

static(静态的)

class Person {

public static $national = '中国';

public static function show()

{

echo "这是一个静态方法";

}

}

//测试

echo Person::$national,'
';

Person::show();

1、static修饰属性成为静态属性,static修饰方法成为静态方法

2、静态属性在加载类的时候分配空间,所以不需要实例化就可以直接访问

3、访问静态成员语法:类名::静态成员

4、静态成员在内存只有就一份,为所有的实例公共。

5、静态成员不能访问普通成员,只能访问静态成员。因为静态成员被创建的时候可能还没有任何实例被实例化

6、静态变量在类加载的时候产生,页面执行完毕销毁

self

self表示当前类的名字

class User {

public static $count = 0;

public function __construct(){

self::$count++;//表示当前类的名字

}

public function (){

self::$count--;

}

}

$user1 = new User();

$user2 = new User();

静态成员是可以被继承的

header("Content-type: text/html; charset=utf-8");

class Person {

public static $nation = '中国';

public static show(){

echo "这是一个父类的静态方法";

}

}

class Student extends Person{

}

echo Student::$national,'
';

Student::show();

确定当前对象(静态延时绑定)

【static::静态成员】称为延时绑定,static表示的是一个类,具体表示什么类在运行时确定,表示的是当前对象所在的类

class Person {

public static $type='人类';

public function showPerson() {

//var_dump($this); //object(Student)#1 (0) { }

//echo self::$type; //人类

echo static::$type; //学生 【静态延时绑定】

}

}

class Student extends Person {

public static $type='学生';

public function showStu() {

//var_dump($this); //object(Student)#1 (0) { }

//echo self::$type; //学生

echo static::$type; //学生 【静态延时绑定】

}

}

//测试

$stu=new Student;

$stu->showPerson();

echo '


';

$stu->showStu();

final(最终的)

final修饰的类不能被继承

final修饰的方法不能重写

367875620df3

367875620df3

abstruct(抽象的)

1、abstruct修饰的方法叫抽象方法,abstruct修饰的类叫抽象类

2、如果只有方法的声明而没有方法的实现成为抽象方法

3、如果一个类中有一个方法是抽象方法,那么这个类就是抽象类

4、抽象类不允许实例化,必须在子类中重新实现才能实例化

//抽象类

abstract class Goods {

protected $name;

public function setName($name) {

$this->name=$name;

}

abstract public function getName(); //抽象方法

}

//实现抽象类

class Book extends Goods {

public function getName() {

echo "《{$this->name}》";

}

}

//测试

$book=new Book();

$book->setName('PHP入门到精通');

$book->getName();

抽象类的作用:

1、定义统一的方法名称

2、防止实例化

接口(interface)

1、如果一个类中所有的方法全都是抽象方法,那么这个类就可以声明成接口

2、接口是一个特殊的抽象类

3、接口中的抽象方法只能是public的,默认也是public权限

4、通过implements类实现接口

5、不能通过final和abstract修饰接口中的抽象方法

interface Goods {

function add();

function update();

}

class GoodsA implements Goods {

public function add() {

echo '实现add
';

}

public function update() {

echo '实现update
';

}

}

//测试

$goods=new GoodsA();

$goods->add();

$goods->update();

接口允许多重实现

367875620df3

类不允许多重继承,接口允许多重实现

继承类同时实现接口

367875620df3

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34755947/article/details/115118979
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 12:12:36
  • 阅读 ( 585 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢