>백엔드 개발 >PHP 문제 >PHP의 추상 클래스와 인터페이스의 차이점은 무엇입니까

PHP의 추상 클래스와 인터페이스의 차이점은 무엇입니까

coldplay.xixi
coldplay.xixi원래의
2021-03-10 17:51:562859검색

차이점: 1. 추상 클래스는 속성과 일반 메서드를 가질 수 있지만 인터페이스는 그렇지 않습니다. 2. 추상 클래스에는 추상 메서드가 없을 수 있지만 인터페이스에는 "추상" 메서드가 있어야 합니다. 4. abstract 키워드를 사용하여 클래스 앞에 추상 클래스를 선언하고, 클래스를 클래스로 선언합니다. 인터페이스는 인터페이스로 선언하지만 클래스로 선언할 수는 없습니다. 5. 추상 클래스의 추상 메소드는 선언해야 합니다. 추상을 사용하지만 인터페이스는 필수가 아닙니다. 6. 추상 클래스와 인터페이스는 세부 메서드를 다른 방식으로 구현합니다.

PHP의 추상 클래스와 인터페이스의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 8 버전, DELL G3 컴퓨터.

PHP에서 추상 클래스와 인터페이스의 차이점:

추상 클래스: 클래스를 기반으로 하며 직접 인스턴스화할 수 없는 클래스일 뿐입니다. 클래스에서 정의할 수 있습니다. 템플릿과 유사하게 사양을 지정한 후 하위 클래스는 세부 기능을 구현할 수 있습니다.

인터페이스: 주로 메소드 사양을 기반으로 하며, 추상 메소드보다 더 독립적이라는 점을 제외하면 추상 클래스의 추상 메소드와 약간 비슷합니다. 여러 메소드를 결합하여 클래스를 새로운 클래스로 결합할 수 있습니다.

추상 클래스와 인터페이스의 유사점:

1. 둘 다 구체적인 구현 세부 사항 없이 특정 항목을 선언하고, 이름과 매개 변수를 표준화하고, 모듈을 형성하는 데 사용됩니다.

2. 모든 관련 세부 사항은 클래스를 통해 구현됩니다.

3. 문법적으로 추상 클래스의 추상 메서드는 인터페이스와 동일하며 메서드 본문을 가질 수 없습니다. 즉, {{} 기호

4를 사용할 수 있습니다. 인터페이스를 상속하면 새로운 인터페이스가 형성됩니다. 추상 클래스는 추상 클래스를 상속하여 새로운 추상 클래스를 형성할 수 있습니다.

추상 클래스와 인터페이스의 차이점:

1추상 클래스는 속성과 일반 메서드를 가질 수 있습니다. 속성이 있고, 일반 메서드에는 상수가 있을 수 있습니다

2. 추상 클래스에는 추상 메서드가 없을 수 있지만 인터페이스에는 "추상" 메서드가 있어야 합니다

3. 추상 클래스는 먼저 선언됩니다. abstract 키워드가 있는 클래스가 있고 클래스로 선언된 클래스가 있는 경우 인터페이스는 인터페이스로 선언되지만 인터페이스는 클래스가 아니기 때문에 클래스로 선언할 수 없습니다.

5. 추상 클래스의 추상 메서드는 추상으로 선언해야 하지만 인터페이스는 선언할 필요가 없습니다.

6. 추상 클래스는 하위 클래스가 상위 클래스를 상속할 수 있도록 하기 위해 확장 키워드를 사용합니다. 서브클래스에서. 인터페이스는 구현을 사용하여 일반 클래스가 클래스에서 인터페이스의 세부 메소드를 구현할 수 있도록 하며 인터페이스는 한 번에 여러 메소드를 구현할 수 있습니다. 각 인터페이스를 쉼표로 구분하면 됩니다

각 특성:

    In 추상 클래스 추상 메소드가 없을 수도 있지만 추상 메소드가 있는 클래스는 추상 클래스여야 합니다
  1. 추상 클래스에서는 모두 구상 메소드라 할지라도 상속할 새 클래스를 생성하는 것만으로는 인스턴스화할 수 없습니다. 인스턴스가 클래스를 상속받을 수 있나요
  2. 인터페이스를 사용하면 클래스가 한 번에 여러 개의 서로 다른 메서드를 구현할 수 있습니다
  3. 인터페이스 자체는 추상이지만 인터페이스가 클래스가 아니기 때문에 추상 클래스가 아니라는 점에 유의하세요. 그러나 그 방법은 추상적이다. 그러므로 추상적이기도 합니다
적용 및 조합:

다음 코드는 제 생각을 기반으로 한 것이며 실제 개발에는 적용하지 않은 것인데, 이런 작성 방식이 좀 이상합니다. 추상화와 인터페이스를 결합하자.

1. 추상 클래스와 인터페이스의 결합

<?php 
/* 
写此程序源于自己的猜测,想在抽象类里实现某一接口。 
*/
interface work{ 
  public function say(); 
}
abstract class a implements work{ 
  public function showlove(){ 
    echo &#39;love you<br />&#39;; 
  } 
}
class b extends a{ 
  public function say(){ 
    echo &#39;hello, i m in b&#39;; 
  } 
}
$k=new b(); 
$k->say();
/* 
以上程序能正常执行
普通类implements接口后,就变成了抽象类了,这就好像是直接给抽象类增加了一个抽象方法。
*/

2. 인터페이스와 상속의 결합

상위 클래스는 하위 클래스가 상속된 후 하위 클래스에 인터페이스가 구현됩니다. 같은 시간.

질문: 이 접근 방식이 실제 개발에 적용되는 경우가 있나요?

<?php
interface kk{ 
  public function say(); 
}
class a { 
  public function show(){ 
    echo &#39;我是父类<br />&#39;; 
  } 
}
class b extends a implements kk{ 
  public function say(){ 
    echo &#39;我是继承A类,同时实现say接口的<br />&#39;; 
  }
}
$b=new b(); 
$b->show();//我是父类
$b->say();//我是继承A类,同时实现say接口的

관련 영상 추천:
초보부터 마스터까지 PHP 프로그래밍

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.