重蔚自留地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中的代码管理工具。

    PHP是一种常用的动态编程语言,用于构建各种Web应用程序。为了有效地管理PHP代码,开发人员可以使用各种代码管理工具。本文将介绍几个常见的PHP代码管理工具以及它们的优势。GitGit是最受欢迎的版本控制系统之一,…

    2023年5月28日
    04
  • GOTO语句

    goto语句就是在页面中的不同位置进行跳转. 语法:  Goto 表示名;                        可以写代码;              表示名: 案例:

    2018年4月1日
    0210
  • php实现签到功能的方法实例分析(附代码)

    本文实例讲述了php实现签到功能的方法。分享给大家供大家参考,具体如下: 首先我在数据库里建了两张表,一个是用户的积分表,一个是签到状态表,分来用来记录用户的积分数和先到状态   在用户签到状态表中我们有…

    2018年3月7日
    0347
  • 聊聊security过滤器链。

    链式过滤器(Filter Chain)是SAP Hybris中用于实现灵活、可扩展的过滤功能的一种机制,它允许开发人员将多个过滤器链接在一起,形成一个过滤器链,从而对数据进行复杂的处理和筛选,链式过滤器的设计使得开发人员…

    2024年6月14日
    00
  • PHP中如何进行打印机和扫描仪应用开发?

    随着信息技术的不断发展,打印机和扫描仪已经成为了现代商务与生活中不可缺少的设备之一。而为了更好地满足用户的需求,开发一款能够优化打印和扫描操作的应用程序,也成为了每个开发者都想要实现的目标。本文将介…

    2023年5月17日
    01
  • PHP文件操作相关函数

    bool copy ( string filename , string dest ) 复制文件 string filename:原文件 string dest :目标文件 bool unlink ( string filename ) 删除文件 string filename:要删除的文件 bool rename ( string oldname…

    2017年11月15日
    0353
  • PHP实现代码复用的traits新特性的方法

    在阅读yii2源码的时候接触到了trait,就学习了一下,写下博客记录一下。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少…

    2022年6月12日
    0122
  • 21个php常用方法汇总

    php常用方法汇总1. PHP可阅读随机字符串 此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。 /************** *@length - length of random string (must be a multiple of 2) ***…

    2022年6月18日
    0129

联系我们

QQ:951076433

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