2019-07-23 类的继承和final关键字的应用
程序员文章站
2022-06-19 09:56:25
我们称以存在的用来派生新类的类为基类,又称做父类,超类。由已存在的类派生出的新类称为派生类,又称为子类。从一个基类派生的继承称单继承,从多个基类派生的继承称为多继承。也就是说:一个类只能直接从一个类中继承数据。 那么,怎样实现继承呢?很简单,我们只需要按照创建类的方法后跟一个单词extends 父类 ......
我们称以存在的用来派生新类的类为基类,又称做父类,超类。由已存在的类派生出的新类称为派生类,又称为子类。从一个基类派生的继承称单继承,从多个基类派生的继承称为多继承。也就是说:一个类只能直接从一个类中继承数据。
那么,怎样实现继承呢?很简单,我们只需要按照创建类的方法后跟一个单词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();
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) 。
推荐阅读
-
java 中的static关键字和final关键字的不同之处
-
Java 语言中关键字“static”的理解和应用详解
-
python继承和抽象类的实现方法
-
子类可以继承父类的一切方法,成员变量,甚至是私有的,但是却不能够访问这些私有的成员变量和方法
-
Java学习笔记(5)--- Number类和Math 类,String类的应用,Java数组入门
-
Bottle框架中的装饰器类和描述符应用详解
-
Javascript中类式继承和原型式继承的实现方法和区别之处
-
php类中的$this,static,final,const,self这几个关键字使用方法
-
[python] 在 python2和3中关于类继承的 super方法简要说明
-
C++ 类的继承和派生