특성과 인터페이스의 차이점은 다음과 같습니다. 1. 특성은 포함과 유사하며 use를 사용하여 클래스 중간에 배치할 수 있습니다. 정의된 메서드는 클래스의 일부이며 직접 인스턴스화할 수 없습니다. 인터페이스는 가상이므로 상속할 때 이러한 메서드를 다시 정의해야 합니다.
특성과 인터페이스의 차이점은 다음과 같습니다.
1. trait
는 코드 재사용을 위해 작성된 작은 플러그인과 비슷하며 사용할 수 있습니다. 특성에 정의된 메서드가 클래스의 일부이고 직접 인스턴스화될 수 없도록 클래스 중간에 배치합니다. trait
看上去更像是为了代码的复用而写的一个小插件,它类似于include,可以用use放在类中间,让trait里面定义的方法作为class的一部分,本身不能直接实例化。
2、interface
里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。也就是说,方法是说明性质的,并没有实际操作,而你在继承的时候,需要实现这些方法,不然就会出错,而且不能缺失。interface经常用于架构的时候,对一个实例所拥有的属性和方法进行抽象定义。简单来讲类似一个协议,是老板下达的任务。你要继承的话,必须满足这个协议,也就是完成老板下达的任务。
<?php trait MyTrait { protected $var = 'MyTrait_var'; protected $var1 = 'MyTrait_var'; function __construct() { echo $this->var."</br>"; } function a() { echo "a"."</br>"; } } interface MyInterface { function __construct(); function b(); } abstract class MyAbstract { protected $var2 = 'MyAbstract_var'; use MyTrait; function b() { echo "b"."</br>"; } } class MyClass extends MyAbstract implements MyInterface { protected $var3 = 'MyClass_var'; function c() { echo "c"."</br>"; } } $class = new MyClass(); $class->a(); $class->b(); $class->c();
以上代码中,MyAbstract中的function b()
也可以放在MyClass
中,或者由MyAbstract实现接口MyInterface
인터페이스
의 메서드는 모두 가상이므로 상속 시 이러한 메서드를 재정의해야 합니다. 즉, 메서드는 본질적으로 설명적이며 실제 작업이 없습니다. 상속할 때 이러한 메서드를 구현해야 합니다. 그렇지 않으면 오류가 발생하고 누락될 수 없습니다. 인터페이스는 인스턴스가 소유한 속성과 메서드를 추상적으로 정의하기 위해 아키텍처에서 자주 사용됩니다. 쉽게 말하면 상사가 맡긴 업무인 합의와 비슷하다. 상속을 받으려면 이 계약을 충족해야 합니다. 즉, 상사가 할당한 작업을 완료해야 합니다. rrreee초보부터 숙련까지 PHP 프로그래밍🎜🎜🎜위 코드에서 MyAbstract의
관련 학습 권장 사항:function b()
는MyClass
에 배치될 수도 있고,MyInterface
인터페이스는 다음으로 구현됩니다. MyAbstract
위 내용은 특성과 인터페이스의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!