类、接口、特性三者之间的关系和区别

WBOY
リリース: 2016-06-06 20:12:17
オリジナル
1474 人が閲覧しました

看表格看不懂的,请回顾一下前三篇文章,这是一份总结表。通过对比更直观。 - Class Interface Trait 目的 封装一类对象的属性和行为。 抽象一类对象的行为准则,而不关注其具体实现。 解决单继承的限制。(历史解决方法是使用混入类(Mixin)) Class class Cla

PHP LOGO

看表格看不懂的,请回顾一下前三篇文章,这是一份总结表。通过对比更直观。

- Class Interface Trait
目的 封装一类对象的属性和行为。 抽象一类对象的行为准则,而不关注其具体实现。 解决单继承的限制。(历史解决方法是使用混入类(Mixin))
Class class ClassA extends ClassB class Class implements Interface class Class {
use Trait;
}
Interface - Interface1 extends Interface2 -
Trait - - trait Trait1 {
use Trait2;
}
*注:以上是三者可使用的关系,以下是其具体区别!
abstract 类前(抽象类),方法前(抽象方法) - 方法前(抽象方法)
final 类前(不可继承),方法前(不可重写) - 方法前(不可重写)
const 有类常量 有接口常量 -
static 静态变量,静态方法 静态方法 静态变量,静态方法
访问控制
public
protected
private
继承可改变访问控制
实现接口只能用public
use Trait可以用as改变访问控制。
- use Trait可以用as改变访问控制
同名变量 覆盖(extends Class)
报错(use Trait)
- 报错(use Trait)
同名方法 覆盖(extends)
报错(use Trait) 可用insteadof或as解决
报redeclare错(extends Interface) 报错(use Trait) 可用insteadof或as解决
*注:静态成员变量/函数与普通成员变量/函数的命名不可一样,不然会报错。

( 完 )

版权所有:老白经 转载请保留来源信息。 >

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート