IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php 类与对象 -> 正文阅读

[PHP知识库]php 类与对象

PHP

继承

  • 继承使用关键字 extends
  • 子类继承父类时, 将会覆盖掉父类的同名属性或方法, 包括魔术方法(__construct)
  • 子类继承父类时, 同名的属性或方法的修饰符只能向宽松的方法延伸(父类为 protected, 子类可以为 protectedpublic, 不能为 private)
  • 子类可以使用 parent 访问被覆盖的父类方法

parent::__construct();

  • static 关键字修饰的静态成员没有覆盖的动作, 通过 类名self 进行访问, 父类可以使用 static 访问最终实例化对象所属类的成员

static::$nickname

抽象

  • 抽象使用关键字 abstract
  • PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
  • 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)

接口

  • 接口使用关键字 interfaceimplements
  • 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 由于接口(interface)和类(class)、trait 共享了命名空间,所以它们不能重名
  • 接口中定义的所有方法都必须是公有,这是接口的特性。
  • 接口可以定义魔术方法,以便要求类(class)实现这些方法, 虽然没有禁止,但是强烈建议不要在接口中使用构造器
  • 接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。
  • 接口支持多继承

interface INT3 extends INT1, INT2{}

  • 可以多实现接口

class Child extends Base implements INT1, INT2

trait

  • trait 使用关键字 trait
  • Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。
  • Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
  • 从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
  • 使用 insteadof 解决重名的冲突, 使用 as 修改名称也可以解决冲突, as 还可以修改访问控制级别(不受宽松的限制, 任意修改)
	trait Trait1
	{
		public function print()
		{
			echo 'trait1';
		}
	}
	
	trait Trait2
	{
		public function print()
		{
			echo 'trait2';
		}
	}
	
	class Child
	{
		public function __construct() {
			$this->print();
			$this->print2();
		}
	
		use Trait1, Trait2 {
			Trait1::print insteadof Trait2;
			Trait1::print as protected;
			Trait2::print as protected print2;
		}
	}
	
	$instant = new Child();
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:49:47  更:2021-08-19 11:51:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/15 5:09:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码