1.php 인터페이스 클래스: 인터페이스
사실 그들의 역할은 매우 간단합니다. 많은 사람들이 함께 프로젝트를 개발할 때 다른 사람들이 작성한 일부 클래스를 모두 호출할 수 있습니다. 그러면 특정 기능의 구현 방법 이름을 어떻게 알 수 있습니까? 예, 현재로서는 PHP 인터페이스 클래스가 작동합니다. 인터페이스 클래스를 정의할 때 해당 클래스의 메소드는 다음과 같은 하위 클래스로 구현되어야 합니다.
인터페이스 Shop
{
public function buy($gid);
public function Sell( $gid);
public function view($gid);
}
Shop 인터페이스 클래스를 선언하고 세 가지 메소드(buy, Sell, Look(view), then all)를 정의합니다. 이 클래스를 상속하는 하위 클래스는 이러한 세 가지 메서드 중 하나를 구현해야 합니다. 하위 클래스가 이를 구현하지 않으면 작동하지 않습니다. 사실 인터페이스 클래스는 직설적으로 말하면 클래스의 템플릿이자 클래스의 규정이다. 이 범주에 속하면 어떻게 하든 내 규정을 따라야 한다. 방법은 귀하에게 달려 있습니다.
BaseShop 클래스는 Shop을 구현합니다
{
공개 함수 buy($gid)
{
echo('ID: '.$gid.'로 제품을 구입했습니다.');
}
공개 함수 판매($ gid)
{
echo('ID가 '.$gid.'인 제품을 판매했습니다.');
}
공개 함수 view($ gid)
{
echo('ID:'.$gid.'로 제품을 조회하셨습니다.');
}
}
생각해 보세요. 여러 사람이 협업하는 대규모 프로젝트, 특정 기능의 메소드 이름이 무엇인지 다른 사람에게 물어볼 필요가 없도록 인터페이스 클래스가 있으면 얼마나 편리합니까? 물론 이것이 마음에 들면 어쩔 수 없습니다. 그것.
결론: 인터페이스 클래스는 클래스의 리더로서, 서브클래스가 지정된 메소드를 완료해야 합니다.
2.php 추상 클래스: 추상
사실 추상 클래스와 인터페이스 클래스는 부분적으로 비슷합니다. 어디선가 이 문장을 본 기억이 있는데, 추상 클래스는 클래스 이미지의 일부를 추출한 것인데, 사실 이 문장이 추상 클래스의 진실을 말해줍니다. 추상 클래스 중 많은 클래스가 계속 다시 작성하는 많은 메서드를 사용하는 경우 "모든 공용 클래스에 대해 하나의 클래스를 다시 작성할 수는 없습니다."라고 말할 수 있습니다. 이 공개 클래스를 사용하고 동일한 메서드를 호출합니다." 괜찮습니다. 실제로 이것은 추상 클래스가 수행하는 작업이지만 인스턴스화 단계를 절약하고 직접 작업을 수행할 수 있게 해줍니다. 이 클래스 메서드를 호출하는 것도 마찬가지로 편리합니다. 이 메서드를 오버로드할 수도 있습니다. 예:
추상 클래스 BaseShop
{
공개 기능 구매($gid)
{
echo ('판매한 제품:'. $ Gid. '); ID가 있는 제품: '.$gid.');
}
}
class BallShop은 BaseShop을 확장합니다
{
var $itme_id = null;
public function __construct()
{
$this->itme_id = 2314;
}
공개 함수 open()
{
$this->sell($this->itme_id)
}
}
다음은 위와 같은 예입니다. 상점 클래스를 정의하고 해당 부분을 모두 추출하고 이러한 메소드를 추상 클래스에 구현하면 이를 상속받은 하위 클래스가 자동으로 이러한 메소드를 얻습니다. 하위 클래스는 고유한 작업을 수행하고 코드 중복을 도입하며 재사용성을 향상시킵니다.
결론: 추상 클래스는 클래스의 서비스 제공자입니다. 필요할 때 사용할 필요가 없습니다. .제공된 서비스가 만족스럽지 않다고 생각되시면 직접 하셔도 됩니다. 추상 함수 메소드는 인터페이스와 다소 유사하며 상위 클래스에서 구현되어야 합니다. 그러나 추상으로 선언되지 않은 메소드는 하위 클래스의 공개 메소드가 됩니다. 서브클래스