我们称以存在的用来派生新类的类为基类,又称做父类,超类。由已存在的类派生出的新类称为派生类,又称为子类。从一个基类派生的继承称单继承,从多个基类派生的继承称为多继承。也就是说:一个类只能直接从一个类中继承数据。

那么,怎样实现继承呢?很简单,我们只需要按照创建类的方法后跟一个单词extends 父类名即可。比如此刻我们已经有了一个父类,代码如下:

class Preson{
function say()
{
echo "1";
}
}

此时我们想继承这个类,怎么办呢?看下代码:

class Student extends Preson{
function sing()
{
$this->say();
}
}

可以看到我们并没有在student这个类中并没有写say方法,但在sing方法中去调用了say方法,此刻我们去实例化student这个类后,再去调用sing方法,可以输出1。证明继承成功。

$obj = new Student();
$obj->sing();

如果继承的子类中有和父类相同的方法名会怎么样呢?

class Preson{
function say(){
echo "1";
}
} class Son extends Preson{ function say(){
echo "2";
}
} $obj = new Son();
$obj->say();

输出结果为2,可见子类的方法覆盖了父类的方法。如果父类不想被子类覆盖怎么办呢?

class Preson{
function say(){
echo "1";
}
} class Son extends Preson{ function say(){
parent::say();
echo "2";
}
} $obj = new Son();
$obj->say();

输出结果为12;我们在子类方法中加入parent::方法就可以让父类方法不被覆盖,继而在子类中延续和完善。

final关键字

这个关键字只能用来定义和定义方法, 不能使用final这个关键字来定义成员属性,因为final是常量的意思,我们在PHP里定义常量使用的是define()函数,所以不能使用final来定义成员属性。

使用final关键标记的方法不能被子类覆盖,是最终版本;

如果还是上面的例子,我们在类前面加一个关键字final会怎么样呢?

<?php
//创建一个父类
final class Preson{
function say()
{
echo "1";
}
} class Student extends Preson{
function sing()
{
$this->say();
}
} $obj = new Student();
$obj->sing();
?>

显示结果会报错:Fatal error: Class Student may not inherit from final class (Preson) 。

2019-07-23 类的继承和final关键字的应用的更多相关文章

  1. “全栈2019”Java第五十一章:继承与final关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. Day 23 类的继承,派生,组合,菱形继承,多态与多态性

    类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...

  3. 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等

    今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...

  4. Java 之继承和 final 关键字

    继承的概述 继承的特点 super 关键字 函数覆盖 子类的实例化过程 final 关键字 1. 继承的概述 继承是类与类之间的关系. 继承的好处: 提高了代码的复用性 让类与类之间产生了关系, 给第 ...

  5. 继承之final关键字的使用

    final关键字 使用final关键字坐标识具有"最终的"含义, final可以修饰类.方法.属性.和变量. final修饰类表示该类不能被继承 final修饰方法,则表示该方法不 ...

  6. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  7. Java的继承,final关键字,super关键字

    1.继承的初始化顺序: 父类—>父类的初始化对象中的属性—>父类的构造方法—>子类—>子类的初始化对象中的属性—>子类的构造方法 若有构造方法:则先执行属性,再执行构造方 ...

  8. 类,接口,final

    继承extends 子类实例化过程: 子类中所有的构造方法默认都会访问父类中空参的构造方法 因为每一个子类的构造方法的提议行都有一条默认的语句super(); this super final修饰类, ...

  9. php面向对象:类的继承实例讲解

    什么是类的继承?说白了,我觉得就是提高代码使用效率的.下面我就给大家介绍下继承.大理石平台维修 类的继承概念 子类继承父类的所有成员变量个方法,包括构造方法,当子类被实例化时,php会现在子类中查询构 ...

随机推荐

  1. UEFI Install CentOS 7

    bios必须设置u盘为第一启动项 编辑E:\EFI\BOOT\grub.cfg中所有inst.stage2=hd:LABEL=*与卷标名称一致(区分大小写)(linux系统写入镜像无需修改) inst ...

  2. Java学习笔记(1)--- 简介

    简介: 注:和之前的C不一样,本人没有学过java,所以内容上可能会相对详细一些. 主要特性: 1.这跟c++一样是面对对象语言: Java语言提供类.接口和继承等面向对象的特性,为了简单起见,只支持 ...

  3. python 将带有TZ的UTC时间字符串,转换成本地时间

    整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用协调时(UTC, Universal Time Coordinated).UTC与格林尼治 ...

  4. 第16讲:ODBC&JDBC简介

    一.ODBC简介 1. ODBC的概念 ①ODBC:Open DataBase Connection,即开放数据库连接 ②ODBC是一种标准,它规定了不同语言的应用程序与不同数据库服务器之间通讯的方式 ...

  5. 【CSP-S 2019】D2T2 划分

    Description 传送门 Solution 算法1 12pts 指数算法随便乱搞. 算法2 36pts \(O(n^3)\)dp. 设\(f_{i,j}\)表示以位置\(j\)结尾,上一个决策点 ...

  6. jQuery中Ajax(三)

    1. jQuery.ajaxSetup([options]), 设置全局 AJAX 默认选项. 参数见 'jQuery.ajax(url,[settings])' 说明. 2. jQuery.ajax ...

  7. ionic4之ion-sliders

    <ion-content class="details_"> <img class="courimg_" src="assets/i ...

  8. C#获取CPU和内存使用率

    获取内存使用率 方式1: using System; using System.Runtime.InteropServices; namespace ConsoleApp1 { public clas ...

  9. [RN] React Native 调试技巧

    React Native 调试技巧 一. 安卓模拟器调出Dev Setting 命令 adb shell input keyevent 二.图片不出来时,先运行此命令,再重新 run react-na ...

  10. 使用Vue封装暂无数据占位图组件

    1. 前言 在日常开发中,页面上肯定有展示数据的需求,但是当某些时候该展示数据的地方此时数据为空时,就会留下一片空白,对用户体验不是很好,那么接下来我们就封装一个空数据时的占位展示图,告诉用户此时用户 ...