> 백엔드 개발 > PHP 문제 > 특성과 인터페이스의 차이점은 무엇입니까?

특성과 인터페이스의 차이점은 무엇입니까?

coldplay.xixi
풀어 주다: 2023-03-01 20:04:01
원래의
3765명이 탐색했습니다.

특성과 인터페이스의 차이점은 다음과 같습니다. 1. 특성은 포함과 유사하며 use를 사용하여 클래스 중간에 배치할 수 있습니다. 정의된 메서드는 클래스의 일부이며 직접 인스턴스화할 수 없습니다. 인터페이스는 가상이므로 상속할 때 이러한 메서드를 다시 정의해야 합니다.

특성과 인터페이스의 차이점은 무엇입니까?

특성과 인터페이스의 차이점은 다음과 같습니다.

1. trait는 코드 재사용을 위해 작성된 작은 플러그인과 비슷하며 사용할 수 있습니다. 특성에 정의된 메서드가 클래스의 일부이고 직접 인스턴스화될 수 없도록 클래스 중간에 배치합니다. trait看上去更像是为了代码的复用而写的一个小插件,它类似于include,可以用use放在类中间,让trait里面定义的方法作为class的一部分,本身不能直接实例化。

2、interface里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。也就是说,方法是说明性质的,并没有实际操作,而你在继承的时候,需要实现这些方法,不然就会出错,而且不能缺失。interface经常用于架构的时候,对一个实例所拥有的属性和方法进行抽象定义。简单来讲类似一个协议,是老板下达的任务。你要继承的话,必须满足这个协议,也就是完成老板下达的任务。

<?php
trait MyTrait
{
    protected $var = &#39;MyTrait_var&#39;;
    protected $var1 = &#39;MyTrait_var&#39;;
 
    function __construct()
    {
        echo $this->var."</br>";
    }
 
    function a()
    {
        echo "a"."</br>";
    }
}
 
interface MyInterface
{
    function __construct();
    function b();
}
 
abstract class MyAbstract
{
    protected $var2 = &#39;MyAbstract_var&#39;;
    use MyTrait;
 
    function b()
    {
        echo "b"."</br>";
    }
}
 
class MyClass extends MyAbstract implements MyInterface
{
    protected $var3 = &#39;MyClass_var&#39;;
    function c()
    {
        echo "c"."</br>";
    }
}
 
$class = new MyClass();
$class->a();
$class->b();
$class->c();
로그인 후 복사

以上代码中,MyAbstract中的function b()也可以放在MyClass中,或者由MyAbstract实现接口MyInterface

2. 인터페이스의 메서드는 모두 가상이므로 상속 시 이러한 메서드를 재정의해야 합니다. 즉, 메서드는 본질적으로 설명적이며 실제 작업이 없습니다. 상속할 때 이러한 메서드를 구현해야 합니다. 그렇지 않으면 오류가 발생하고 누락될 수 없습니다. 인터페이스는 인스턴스가 소유한 속성과 메서드를 추상적으로 정의하기 위해 아키텍처에서 자주 사용됩니다. 쉽게 말하면 상사가 맡긴 업무인 합의와 비슷하다. 상속을 받으려면 이 계약을 충족해야 합니다. 즉, 상사가 할당한 작업을 완료해야 합니다.
rrreee

위 코드에서 MyAbstract의 function b()MyClass에 배치될 수도 있고, MyInterface 인터페이스는 다음으로 구현됩니다. MyAbstract

관련 학습 권장 사항:
초보부터 숙련까지 PHP 프로그래밍🎜🎜🎜

위 내용은 특성과 인터페이스의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿