php 中 Trait 和 继承的区别
什么是 Trait
官网是这么介绍的

大致和继承一样,在一个类中引用其他的类的方法,但是可以避免MiXin的问题
优先级
从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
区别
Class可以被实例化,但是Trait不行Class如果遇到类C继承类B,类B继承类A,这样的话每一次都需要写一个继承关系,但是一旦一个类的类型是Trait,那么这个类的方法就可以直接被使用,而不需要直接继承
总结一句话,
Trait修饰的类不需要写implements来被子类继承
案例
class Say{
public function sayHello(){
echo 'hello';
}
}
// 这里如果 sinmu 类需要使用 Say 这个类的方法,
// 也就是如下方式
class Sinmu extends Say{
}
$sinmu = new Sinmu();
$sinmu->sayHello();
// output: hello
如果使用 Trait 的话,那么就是如下代码
trait Say{
public function sayHello(){
echo 'hello ';
}
}
class Eat{
public function eatWord(){
echo 'word ';
}
}
class Sinmu extends Eat {
use Say;
}
$sinmu = new Sinmu();
$sinmu->sayHello();
$sinmu->eatWord();
// output: hello word
或许会问,都是调用,谁比谁高尚呢?
但是一个东西的诞生一定是为了解决另一个问题的。
如果存在以下继承关系,类B和类C,它们都继承了相同的类A。另外我们还有类D,类D通过多重继承机制继承了类B和类C,c++那边会出现编译报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lDnf3ia-1640604191732)(images/2021-12-27-19-13-54.png)]
java 和 php 只支持单继承,java可以通过接口的方式实现多继承。而 php 的 trait 就有了用处,可以在一个类里面使用多个类的方法
相关推荐
PHP 使用 Trait 解决 PHP 单继承问题详解
主要介绍了PHP 使用 Trait 解决 PHP 单继承问题,结合实例形式详细分析了PHP 使用 Trait 实现PHP单继承的相关操作技巧与注意事项,需要的朋友可以参考下
PHP面试题及答案2.docx
2023 最新面试题目加答案 Python 面试问题与解答在我的博客文章里
浅谈PHP中的Trait使用方法
概述 在PHP中有一种代码复用的技术, 因为单继承的问题, 有些公共方法无法在父类中写出, 而 Trait可以应对这种情况, 它可以定义一些复用的方法, 然后在你需要使用的类中将其引入即可. 刚开始的时候给我的感觉就是将trait代码块直接拿到类中的意思, 但后来我发现, 我太天真了. PHP中的Trait用法: 问题 当我第一次使用的时候, 因为之前一直使用抽象类, 或者定义内部对象, 然后调用内部对象中的方法, 所以我当时有了以下几个问题: 1.能否引入多个, 如果可以的话, 同名方法如何处理 2.引入方法与现有方法重名时, 如何解决 3.能否定义抽象方法, 因为有些方法需要知道使用时的
php5.3,5.4,5.6,版本
php个版本
PHP-面试题基础篇.pdf
面试题基础篇


