>  기사  >  백엔드 개발  >  인터페이스 - PHP 다중 인터페이스 메소드 중복 문제

인터페이스 - PHP 다중 인터페이스 메소드 중복 문제

WBOY
WBOY원래의
2016-08-18 09:16:27931검색

<code>interface A {
    public function code();
}

interface B {
    public function code(string $string);
}

class C implements A,B {
//...code
}</code>

C가 이 두 인터페이스를 동시에 구현해야 하는 경우 두 인터페이스 A와 B의 코드 메서드를 동시에 사용할 수 있는 방법이 있나요? ? ? ?

로컬 테스트에서는 다음 방법 중 하나만 사용할 수 있습니다

답글 내용:

<code>interface A {
    public function code();
}

interface B {
    public function code(string $string);
}

class C implements A,B {
//...code
}</code>

C가 이 두 인터페이스를 동시에 구현해야 하는 경우 두 인터페이스 A와 B의 코드 메서드를 동시에 사용할 수 있는 방법이 있나요? ? ? ?

로컬 테스트에서는 다음 방법 중 하나만 사용할 수 있습니다

PHP는 오버로드될 수 없으며(메서드 이름은 동일하지만 매개변수가 일치하지 않음) 상속에서 재정의될 수 있습니다(매개변수가 일치하는지 여부에 관계없이 동일한 메소드 이름).
즉, PHP의 매개변수가 어떻게 변경되더라도 메소드 이름만 동일하면 이 클래스의 동일한 메소드로 간주됩니다.

물론 동적 언어로서 매직 메소드를 통해 Java의 오버로딩을 시뮬레이션할 수 있습니다. 참조: http://php.net/manual/en/lang...

AB 인터페이스의 특정 로직을 C 인터페이스에 통합하고 C 인터페이스를 직접 호출하는 조잡한 방법이 있습니다^_^

func_get_args http://php.net/manual/en/func...

이러한 작성 방법 자체는 시행착오일 뿐입니다. 공개 메소드는 외부에서 작성되고 클래스에서 직접 호출되므로 모든 포트에 동일한 내용을 작성하지 마십시오.

PHP의 특징에 대해 알아볼 수 있습니다.

php는 다형성을 지원하지 않으므로 이러한 방식은 피하는 것이 가장 좋습니다

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