重蔚自留地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

相关推荐

  • 小编教你seo服务有什么样的模式和收费标准。

    如果要谈到网络推广的话,相信大多数的企业负责人可能会想到的就是百度竞价,但是大多数的人也会感觉到这样的一种推广方式,费用特别高,因此他们在一开始的时候就在寻找性价比相对较高的推广方式,其实很多人会考…

    2023年6月26日
    05
  • 关于PHP类型的转换

    自动转换: 通常自动转换是弱类语言的一个最基本也最方便的一个特征:它会在各种运算中根据运算符的需要也将非该运算符所能处理的数据转换为可以处理的数据。常见情形如下: if(数据){}:转为bool类型 算术运算符:…

    2018年3月17日
    0213
  • PHP实现抓取百度搜索结果,并分析数据结构

    PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水。代码如下:<?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:58 */ require ('./v…

    2022年6月20日 PHP自学教程
    0337
  • PHP中如何进行深度强化学习和自然语言翻译。

    在现代技术的发展中,深度强化学习和自然语言翻译是两个最具代表性的应用领域。而PHP,作为一门简单易学的编程语言,也能够参与到这两个领域中来,为AI技术的广泛应用提供更多的可能性。一、深度强化学习深度强化学…

    2023年5月23日
    03
  • 小编分享dede短信接口怎么写。

    一、什么是Dede短信接口? Dede短信接口是指基于DedeCMS(织梦内容管理系统)的一款用于发送短信的API接口,DedeCMS是一款开源的内容管理系统,广泛应用于企业网站的建设,通过Dede短信接口,用户可以方便地实现对网…

    2024年6月15日
    05
  • 基于canvasJS在PHP中制作动态图表详解

    CanvasJS是一个JavaScript库,用于轻松为网页创建其他类型的图表。例如条形图,饼图,柱形图,面积图,折线图等。让我们以需要创建一个图表的示例为例,在该图表中我们可以显示每月销售和购买的产品。我们将考虑两…

    2022年6月14日
    0140
  • 分析PHP URL中特殊字符引起的问题(+,\\,=)

    PHP中URL中特殊字符引起的问题(+,,=)前言,在做某个渠道的过程中,发现一个验签错误的问题。但是,当时验签在两个地方表现不一致,同一套处理方法,想到了这是因为两个地方请求方式是不同的一个get方法另外一个自然…

    2022年6月23日
    0153
  • 小编教你java工厂模式应用场景举例。

    工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,在Java中,工厂模式主要分为简单工厂模式、工厂方法模式和抽象工厂模式,本文将介绍这三种工厂模式的应用场景,并通过实例来说明它们的实现。 一、…

    2024年6月18日
    02

联系我们

QQ:951076433

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