重蔚自留地php学习第44天——继承重载

回顾

自动加载:__autoload(),而是在需要使用的时候,而类又没有被加载进内存情况下,会自动触发的一个函数而已。

 

类常量:const 常量名

使用:类名::常量名

 

静态:静态属性和静态方法,static

使用:类名::$属性名,类名::方法名()

静态方法里不能使用$this

 

魔术方法

__toString():在将对象进行字符串输出的时候(echo),会自动触发

__clone():在对象克隆的时候会自动调用的方法(被克隆出来的新对象调用)

 

模式

单例模式:一个类只能创建一个对象

特点:三私一公(私有化构造方法,私有化克隆方法,私有化静态属性,公有化静态方法)

 

练习:

注册:注册表单

登录:登录表单

处理

DB类文件

Privilege类

index.php:欢迎页

 

OOP的三大特征

封装,继承,多态

封装:将数据和对数据的操作捆绑到一起。隐藏了数据以及数据的处理,但是对外提供了操作的接口(公共的方法)
封装是可以分层次的。

继承:指的是当封装的层次低于某个层次的时候,低层次的封装可以直接从高层次的封装(class)去获得其已经拥有的属性或者方法。
class student{
//属性
public $student_id;

//方法
public function zuocao(){
课间操
}
}

class ElementalStudent{
//属性
public $student_id;

//方法
public function zuocao(){
第八套广播体操
}
}

继承
class ElementalStudent 继承 Student{

}

多态:多种形态。在面向对象里,可以存在多个同名的方法,要求每个方法的参数列表或者返回值类型不一样。(PHP不支持多态)
重载:对一个同名函数,使用不同的实现方式
PHP:错误的
class Person{
public function zuocao(小学生){
小学生做操
}

public function zuocao(){
做操
}
}

JAVA:正确
class Person{
public string function zuocao(){
return 字符串;
}

public Int function zuocao(){
return 整型;
}

Public int function zuocao(int str){
return str;
}
}

PHP继承

语法:class 子类 extends 父类

子类:继承其他类的类称之为子类。

父类:封装的最高层的类,被继承的类称之为父类。

重蔚自留地php学习第44天——继承重载

继承到底继承了哪些东西?

继承了属性,非私有的方法(普通的)

属性继承:

重蔚自留地php学习第44天——继承重载

方法继承:

重蔚自留地php学习第44天——继承重载

 

protected:受保护的,指的是在继承链上,都可以在另外的类(不论子类和父类)都可以使用受保护的方法或者属性

继承和访问的原理

重蔚自留地php学习第44天——继承重载

继承冲突

子类中有与父类相同的属性或者方法,那么这个时候就出现了继承冲突。

重写:overwrite,子类拥有与父类同名的属性或者方法。意味着一个类中只有一个改名字的方法。

重蔚自留地php学习第44天——继承重载

注意

  1. 如果父类的的方法是私有的,那么子类拥有同名方法的时候,不是重写

重蔚自留地php学习第44天——继承重载重写父类方法的时候,子类里面的访问修饰限定符必须要比父类的级别低

重蔚自留地php学习第44天——继承重载

单继承

PHP中一个子类只能继承自一个父类

错误

重蔚自留地php学习第44天——继承重载

如果非要继承多个类,是可以做到的。链式继承。

重蔚自留地php学习第44天——继承重载

特殊类:不能被继承的类,只能被继承的类

final类:当前类已经是最末尾的了

  语法:Final class 类名

重蔚自留地php学习第44天——继承重载

final的意义:不希望当前类还被别的类继承。防止类被扩展。

 

final还能修饰方法,表示方法不能被重写

重蔚自留地php学习第44天——继承重载

final关键字只能修饰类和方法,不能修饰属性。

abstract类:抽象类,只能被继承

语法:abstract class 类名

抽象类指的是拥有抽象方法

抽象方法:使用abstract关键字修饰,没有方法体的方法、

 

实例化抽象类

重蔚自留地php学习第44天——继承重载

继承自抽象类的子类必须实现抽象类里的抽象方法(或者将当前子类也声明成抽象类)

重蔚自留地php学习第44天——继承重载

抽象类中可以有哪些东西?

凡是正常类出现的东西(属性,方法和常量)都可以在抽象类中出现。

 

抽象类的意义?

  1. 抽象类只能被继承,用来规范子类的结构。

接口

接口就是一个简单的容器,该容器专门用来规范类的结构的东西。

语法:interface 接口名字{接口体}

接口体

  1. 不能有属性
  2. 方法必须没有方法体
  3. 所有的访问限定修饰符必须是Public

 

接口定义及接口内容

重蔚自留地php学习第44天——继承重载

接口的实现:接口的实现必须通过类才能实现

语法:class 类名 implements 接口名

类要实现接口,必须实现接口里的所有方法,实现就是给方法增加方法体。

 

接口的使用

重蔚自留地php学习第44天——继承重载

一般较小的项目,追求效率的情况下,不会使用抽象类和接口来进行规范

一般较大的项目,项目团队比较多,就会使用接口或者抽象类来规范一些操作。

 

接口可以继承接口

重蔚自留地php学习第44天——继承重载

面试题:

  1. PHP是否支持多继承?如何模拟?

不支持,链式继承

  1. 接口是不是类?

不是类,接口就是接口

  1. 接口是不是抽象类?

不是,抽象类是类的一种

  1. PHP是否支持多态?

不支持,PHP不允许重名函数或者方法的存在

PHP重载

在对象去访问一个类中不存在或者权限不够的属性或者方法的时候,会自动触发的一些列魔术方法。

 

PHP重载分为两种:属性重载,方法重载

属性重载:访问不存在的或者权限不够的属性

__get():访问一个不存在或者权限不够的属性的时候,会自动调用的方法

重蔚自留地php学习第44天——继承重载

作用:

  1. 提供了一种机制,能够让对象在外部访问原本不能在类外部访问的属性的机制
  2. 能够控制外部对内部属性的访问

重蔚自留地php学习第44天——继承重载

__set():在设置一个不存在或者权限不够的属性的时候,会自动调用的方法

重蔚自留地php学习第44天——继承重载

作用:

  1. 使得内部一些不能在外部访问的属性在外部被设置值
  2. 能够控制部分属性可以被设置,而部分不能被设置
  3. 能够限定对象,不能无限扩展其户型

重蔚自留地php学习第44天——继承重载

练习

  1. 抽象类,接口,重载

 

__isset()(isset和empty时调用):当在外部使用isset函数来判断对象的属性的时候会自动调用的方法

重蔚自留地php学习第44天——继承重载

__unset()(unset调用):在外部对对象的属性进行unset的时候会自动调用的方法

重蔚自留地php学习第44天——继承重载

方法重载:访问不存在的或者权限不够的方法

__call():普通方法访问该方法

重蔚自留地php学习第44天——继承重载

__callStatic():当调用静态方法时会自动访问

重蔚自留地php学习第44天——继承重载

 

不存在的处理方式

重蔚自留地php学习第44天——继承重载

子类可以去显示的调用父类的构造方法

语法:parent::__construct();

重蔚自留地php学习第44天——继承重载

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/10700.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2019年1月7日 00:00
下一篇 2019年1月9日 12:45

相关推荐

  • php跳出语句-continue

    说明:跳过某次循环 案例:输出1-50,然后在第25次时跳过。 //输出1-50,然后再第25次的时候跳过。 for($i=1;$i<=50;$i++){ if($i==25){ continue; } echo $i .' '; }

    2018年3月8日
    0284
  • (实用篇)PHP页面跳转到另一个页面的方法总结

    一、用HTTP头信息 也就是用PHP的header函数。PHP里的header函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache…

    2016年10月21日
    0327
  • php的数组类型array

    标识一系列数据的“有序排列”的集合体。 php中,数组的下标可以使用整数或字符串。 数字下标常说“索引号”, 字符串下标常说“键名”。 实际上,在php的报错系统中,都叫做“index”,或offset 数组中还可以存储数组,就…

    2018年3月17日
    0234
  • 了解PHP中的Trait 特性及作用

    自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。 Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复…

    2022年6月16日
    0131
  • PHP实现微信小程序多语音效果技巧。

    随着移动互联网的发展,微信小程序已经成为了许多企业和开发者的首选开发平台。而在小程序开发过程中,语音效果是非常重要的一个环节。本文将介绍PHP实现微信小程序多语音效果的技巧。 一、微信小程序语音效果的基…

    2023年6月3日
    02
  • 教你使用spatie/async库来写异步的PHP代码

    对于大多数用 PHP 编写的程序,它的唯一目的是执行由多个任务组成的简单进程,其中任务必须按顺序执行,如数据处理。我们总是不得不忍受同步编程的停止和等待。代码执行的同步风格被称为阻塞,这意味着任务将一个接…

    2022年6月23日
    0141
  • PHP8中的数组函数:array_unique()的多种用途。

    在PHP编程语言中,数组是一种非常常见的数据类型。数组的独特之处在于,它允许我们一次存储多个相关变量,并且可以对这些变量进行高效地操作和处理。在PHP8中,有许多有用的数组函数可以帮助我们优化代码,其中一个…

    2023年5月21日
    00
  • PHP中如何进行云上应用的开发和部署?

    PHP是一种流行的Web开发语言,它被广泛应用于云计算平台上的应用程序。在云计算时代,云上应用的开发和部署成为越来越重要的话题。如何使用PHP进行云上应用的开发和部署?这是本文的主题。 一、云计算的定义和特点…

    2023年5月17日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息