programing

클래스는 클래스를 확장하고 인터페이스를 구현할 수 있습니까?

yoursource 2022. 11. 22. 22:30
반응형

클래스는 클래스를 확장하고 인터페이스를 구현할 수 있습니까?

클래스는 PHP에서 인터페이스와 다른 클래스를 모두 확장할 수 있습니까?
기본적으로 이 작업을 수행합니다.

interface databaseInterface{
 public function query($q);
 public function escape($s);
 //more methods
}

class database{ //extends both mysqli and implements databaseInterface
 //etc.
}

어떻게 하면 좋을까요?단순히 다음 작업을 수행합니다.

class database implements databaseInterface extends mysqli{ 

치명적인 오류가 발생합니다.

구문 분석 오류: 구문 오류, 예기치 않은 T_EXTENS, *line*의 *file*에 '{'가 있어야 합니다.

반대로 해 보겠습니다.

class database extends mysqli implements databaseInterface { ...}

이거면 될 거야.

네, 할 수 있어요.올바른 순서를 유지하기만 하면 됩니다.

class database extends mysqli implements databaseInterface { ... }

게다가 클래스는 복수의 인터페이스를 실장할 수 있습니다.쉼표로 구분해 주세요.

하지만 mysqli 수업을 연장하는 것은 매우 나쁜 생각이라고 경고합니다.상속 자체는 객체 지향 프로그래밍에서 가장 과대평가되고 오용되는 개념일 것입니다.

대신 mysqli 방식(또는 PDO 방식)으로 db 관련 작업을 수행하는 것이 좋습니다.

게다가 사소한 것도 있지만 명명 규칙은 중요해당신의 클래스database보다 일반적인 것 같다mysqli따라서 후자가 에서 상속받는 것을 나타냅니다.database그 반대도 아니고.

네, 실제로 복수의 인터페이스를 실장하는 경우는, 다음과 같이 실시할 수 있습니다.

public class MyClass extends BaseClass implements myInterface1, myInterface2, myInterface3{ 

}

언급URL : https://stackoverflow.com/questions/652157/can-a-class-extend-both-a-class-and-implement-an-interface

반응형