>백엔드 개발 >PHP 튜토리얼 >PHP 객체지향(인터페이스) 기본 개념 및 추상 클래스 예제 소개

PHP 객체지향(인터페이스) 기본 개념 및 추상 클래스 예제 소개

伊谢尔伦
伊谢尔伦원래의
2017-07-08 09:16:021133검색

인터페이스란 무엇인가요?

인터페이스는 메서드를 추상화한 것입니다. 서로 다른 클래스에 동일한 메서드가 있는 경우 인터페이스 사용을 고려해야 합니다.
(1) 인터페이스는 동작 사양 및 프로토콜입니다. 실제로 이는 클래스 간의 합의이자 제약입니다. (2) C#은 다중 상속을 지원하지 않지만 구현을 위해 이 기능을 인터페이스에 남겨 둡니다.
(3) 클래스 간 시스템 리소스 호출 방법이 다르기 때문에 클래스 간의 통신이 어렵습니다. 그러나 인터페이스는 클래스 간의 차이점을 숨기고 원활하게 통신할 수 있도록 해줍니다.

(4) 특정 클래스가 구현해야 하는 메서드를 지정할 수 있지만 이러한 메서드의 특정 내용을 정의할 필요는 없습니다.


추상클래스(추상클래스)란 무엇인가요?

1. 추상 클래스는 유형의 부분 구현만 제공합니다. 추상 클래스에는 인스턴스 변수와 하나 이상의

생성자가 있을 수 있습니다. 추상 클래스에는 추상 메서드와 구체적인 메서드가 모두 있을 수 있습니다. 추상 클래스에는 인스턴스가 없으며 클라이언트가 인스턴스를 생성하기 위해 이러한 생성자를 호출할 수 없습니다. 추상 클래스의 생성자는 하위 클래스에서 호출할 수 있으므로 추상 클래스의 모든 하위 클래스는 몇 가지 공통 구현을 가질 수 있으며, 서로 다른 하위 클래스는 이를 기반으로 하는 자체 구현을 가질 수 있습니다.

2. 추상 클래스의 목적 1) 구상 클래스는 상속에 사용되지 않습니다. Scott Meyers는 가능하다면 구체적인 클래스로부터의 상속을 피해야 한다고 지적한 적이 있습니다. 2) 클래스 A와 클래스 B라는 두 개의 구체적인 클래스가 있다고 가정합니다. 클래스 B는 클래스 A의 하위 클래스입니다. 그러면 가장 간단한 수정 계획은 추상 클래스(또는 Java 인터페이스) C를 만든 다음 클래스 A와 클래스 B를 두는 것입니다. 추상 클래스 C의 하위 클래스가 됩니다. 3) 추상 클래스에는 가능한 한 많은 공통 코드가 있어야 합니다. 코드 재사용률을 높이기 위해. 4) 추상 클래스에는 가능한 한 적은 데이터가 있어야 합니다.

3. 추상 클래스 기반 패턴 및 원리 1) 특정 프로그래밍을 위한 프로그램이 아닌 추상화를 위한 프로그램입니다. 2) 재사용을 위해 상속 대신 합성(Com

position)을 사용해 보세요. 3) 템플릿 방식을 사용하세요

4. 상속과 재사용은 언제 사용해야 합니까? 1) 서브클래스는 슈퍼클래스의 역할이 아닌 슈퍼클래스의 특별한 범주입니다. 즉, "is-a"와 "has-a"라는 두 관계를 구별해야 합니다. 2) 하위 클래스를 다른 하위 클래스로 교체해야 하는 상황은 절대 발생하지 않습니다. 디자이너가 클래스가 나중에 다른 클래스의 하위 클래스가 되지 않을 것이라고 확신하지 못하는 경우 해당 클래스를 슈퍼클래스의 하위 클래스로 설계해서는 안 됩니다. 3) 서브클래스는 슈퍼클래스를 확장할 책임이 있지만 슈퍼클래스를 대체(재정의)하거나 취소(무효화)할 책임은 없습니다. 4) 상속은 도구 클래스 상속이 아닌 분류학적으로 의미가 있는 경우에만 사용할 수 있습니다.

추상 메서드는 구현해야 하는 메서드입니다. 그리고 추상 수업에서만.

인터페이스 및 추상 클래스

클래스는 여러 인터페이스를 상속할 수 있습니다. . .

클래스는 하나의 추상 클래스만 상속할 수 있습니다. . .

추상 메서드는 구현해야 하는 메서드입니다. 동물이 숨을 쉬어야 하는 것처럼요. 그러나 물고기는 아가미로 숨을 쉬고, 돼지는 폐로 숨을 쉰다.

동물에게는 호흡법이 있어야 합니다. 호흡하는 방법은 하위 클래스의 문제입니다.

현재 추상 클래스 대신 인터페이스 사용을 옹호하는 많은 논의와 제안이 있습니다. 이 둘은 일반적으로 이론상 혼합될 수 있지만 실제 적용에서는 여전히 특정 차이점이 있습니다. 추상 클래스는 일반적으로 하위 클래스 확장의 기반을 제공하는 공개 부모 클래스 역할을 합니다. 여기서 확장에는 특성과 동작이 포함됩니다. 일반적으로 인터페이스는 속성을 고려하지 않고 메소드만 고려하므로 하위 클래스가 인터페이스에 정의된 메소드를 자유롭게 채우거나 확장할 수 있습니다. JAVA Prince가 말했듯이

Event의 어댑터는 좋은 애플리케이션입니다. 교사와 같은 간단한 예를 사용하여 연령, 교육 수준, 교사 수 등과 같은 고유한 속성을 가진 추상 클래스로 취급합니다. 그리고 교사도 여러 유형으로 구분되므로 교사 클래스를 상속할 수 있습니다. 고유한 카테고리 속성을 확장하는 반면, 보편적인 속성은 직접 상속됩니다. 인터페이스에 관해서는~ 선생님을 예로 들어보겠습니다. 선생님은 평범한 사람들과 똑같을 뿐만 아니라 시험지 교정, 강의 등 직업과 관련된 행동도 있습니다. 몸체 없는 메서드로서의 동작은 컬렉션으로서 인터페이스입니다. Zhang San과 Li Si 교사는 행동 특성이 다르기 때문에 행동 신체를 확장할 수 있습니다. 이런 의미에서 인터페이스는 행동에 중점을 둡니다. 요컨대, 속성에 대한 상속을 의도적으로 표현할 필요가 없다면 인터페이스는 실제로 추상 클래스를 대체할 수 있는 경우가 많습니다.

인터페이스는 특정 서비스를 구현하기 위한 일반적인 사양을 정의하고 필요한 기능과 상수를 선언하지만 구현 방법을 지정하지는 않습니다. 구현 세부 사항이 제공되지 않는 이유는 서로 다른 엔터티가 서로 다른 방식으로 공용 메서드 정의를 구현해야 할 수 있기 때문입니다. 핵심은 구현해야 하는 일련의 일반 원칙을 설정하는 것입니다. 이러한 원칙이 충족되어야만 인터페이스가 구현된다고 할 수 있습니다.

클래스 멤버는 인터페이스에 정의되어 있지 않습니다! 클래스 멤버의 정의는 완전히 구현 클래스에 맡겨집니다.

더 많은 인터페이스 상속

<span style="color:#000000"><span style="color:#0000bb"></span></span>

<?php  
interface  a{  
    public function  foo ();  
}  
interface  b{  
    public function  bar ();  
}  
//一个接口类可以继承多个接口  
interface  c  extends  a ,  b{  
    public function  baz ();  
}  
  
class  d  implements  c  
{  
    public function  foo (){  
    }  
    public function  bar (){  
    }  
    public function  baz (){  
    }  
}  
?>

PHP에서는 하나의 클래스가 여러 인터페이스를 구현할 수 있을 뿐만 아니라, 클래스를 상속하면서 여러 인터페이스를 구현할 수도 있습니다. 먼저 클래스를 상속한 다음 인터페이스를 구현해야 합니다

.

위 내용은 PHP 객체지향(인터페이스) 기본 개념 및 추상 클래스 예제 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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