2019-07-23 类的继承和final关键字的应用
我们称以存在的用来派生新类的类为基类,又称做父类,超类。由已存在的类派生出的新类称为派生类,又称为子类。从一个基类派生的继承称单继承,从多个基类派生的继承称为多继承。也就是说:一个类只能直接从一个类中继承数据。
那么,怎样实现继承呢?很简单,我们只需要按照创建类的方法后跟一个单词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关键字的应用的更多相关文章
- “全栈2019”Java第五十一章:继承与final关键字详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Day 23 类的继承,派生,组合,菱形继承,多态与多态性
类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...
- 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等
今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...
- Java 之继承和 final 关键字
继承的概述 继承的特点 super 关键字 函数覆盖 子类的实例化过程 final 关键字 1. 继承的概述 继承是类与类之间的关系. 继承的好处: 提高了代码的复用性 让类与类之间产生了关系, 给第 ...
- 继承之final关键字的使用
final关键字 使用final关键字坐标识具有"最终的"含义, final可以修饰类.方法.属性.和变量. final修饰类表示该类不能被继承 final修饰方法,则表示该方法不 ...
- Java面向对象-Java类的继承及super关键字
Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...
- Java的继承,final关键字,super关键字
1.继承的初始化顺序: 父类—>父类的初始化对象中的属性—>父类的构造方法—>子类—>子类的初始化对象中的属性—>子类的构造方法 若有构造方法:则先执行属性,再执行构造方 ...
- 类,接口,final
继承extends 子类实例化过程: 子类中所有的构造方法默认都会访问父类中空参的构造方法 因为每一个子类的构造方法的提议行都有一条默认的语句super(); this super final修饰类, ...
- php面向对象:类的继承实例讲解
什么是类的继承?说白了,我觉得就是提高代码使用效率的.下面我就给大家介绍下继承.大理石平台维修 类的继承概念 子类继承父类的所有成员变量个方法,包括构造方法,当子类被实例化时,php会现在子类中查询构 ...
随机推荐
- QT信号槽连接语法总结
信号槽是 Qt 框架引以为豪的机制之一. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种触发是没有目的的,类似广播.如果 ...
- 【转载】Android 的 Handler 机制实现原理分析
handler在安卓开发中是必须掌握的技术,但是很多人都是停留在使用阶段.使用起来很简单,就两个步骤,在主线程重写handler的handleMessage( )方法,在工作线程发送消息.但是,有没有 ...
- 【LeetCode】746. 使用最小花费爬楼梯
使用最小花费爬楼梯 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始). 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或 ...
- gdb x命令使用方法
x命令是直接查看指定地址为开头的内存里的内容 既然是要看,就分你想怎么看,和看多少 怎么看: d 按十进制格式显示 x 按十六进制格式显示 a 按十六进制格式显示 u 按十六进制格式显示无符号整型 o ...
- 联邦学习(Federated Learning)
联邦学习简介 联邦学习(Federated Learning)是一种新兴的人工智能基础技术,在 2016 年由谷歌最先提出,原本用于解决安卓手机终端用户在本地更新模型的问题,其设计目标是 ...
- git clone克隆代码显示“无权限或者确认存储库是否存在”
今天我用公司的电脑要继续完成我自己的git上的小项目的时候,发现git clone失败,提示 然后我在公司电脑上生成公钥感觉又太麻烦了 网上找了个好方法就是把自己电脑上的.ssh文件夹拷贝到公司电脑上 ...
- tomcat快速入门
简介 Tomcat 是什么 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理 ...
- pwn-Stack Overflow
地址 https://cgctf.nuptsast.com/challenges#Pwn 先观察一下,是一个32位的程序,而且只开了NX保护 用IDA看看伪代码,重点在message和pwnme这两个 ...
- django框架创建app及使用、
App 创建一个app : python manage.py startapp app01 admin: from django.contrib import admin # Register you ...
- 突然看到原来除了jar包还有war包啊?????
先来说说区别: 首先,jar包呢,是一个压缩文件,可以由很多文件压缩而成,,简单来说就是,jar包是别人写好的一些类,然后对这些类 进行打包,这就是jar包,你可以直接用这些 jar包,使用里面的类 ...