重蔚自留地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自定义的 printf 函数新用途

    【相关学习推荐:php编程(视频)】 大家都知道 libc 的 printf() 及其家族。本章节将详细介绍 PHP 声明和使用的许多克隆,它们的目标是什么,为什么使用它们,以及何时使用它们。 你知道这些函数很有用,但有时无…

    2022年6月19日
    0139
  • 如何使用PHP实现商城的预售功能。

    随着电子商务行业的发展,预售功能逐渐成为电商平台赢得消费者青睐的必备选项之一。预售是指商家在正式售卖商品前提供一定数量的商品预订服务,即顾客可以提前下单预定未来上市的商品。在预售阶段,商家可以通过各…

    2023年5月23日
    01
  • 什么是线程让步?

    在校园中,经常会看到很多同学一起打篮球,当某个同学抢到篮球后可以拍一会儿再传递给其他人,大家重新开始抢篮球,这个过程就相当于程序中的线程让步。线程让步可以通过yield()方法来实现,该方法和sleep(long mil…

    2023年5月6日
    05
  • PHP入门指南:数组。

    PHP是一种服务器端脚本语言,适用于Web开发,它可以通过处理HTML表单、访问数据库和使用Cookies等方式来创建动态交互性Web页面。在PHP中,数组是一种非常重要的数据类型,本篇文章将为您带来PHP数组的入门指南,并…

    2023年5月22日
    00
  • PHP中的人工智能。

    随着人工智能的发展,越来越多的领域开始尝试将其应用于实际生产和生活中。而在计算机领域中,PHP语言也开始向人工智能方向发展。本文将介绍PHP中人工智能的应用及其未来发展趋势。 一、PHP的人工智能应用 PHP作为…

    2023年5月28日
    01
  • 说说java工厂模式应用场景举例。

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

    2024年6月19日
    00
  • php基本环境

    运行环境 保证能够运行php: 测试:echo “abc”; 保证时区设置正确: 测试:echo date(“Y-m-d H:i:s”); 保证模块设置正确: 测试:mysql_connect(“localhost”, ‘root’, ‘123’); 语法环境 有多种嵌入到html代码中的ph…

    2017年10月31日
    0182
  • PHP入门指南:PHP和Cobol。

    PHP和Cobol是两种非常不同的编程语言,但它们都有着自己的优势和适用范围。本文将深入探讨PHP和Cobol的区别和相似之处,并为初学者提供一份PHP入门指南。 PHP是一种开源的脚本语言,通常用于Web开发。它可以嵌入HTM…

    2023年5月22日
    03

联系我们

QQ:951076433

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