나는 클래스 ParentClass()
, 일부 자식 클래스 ChildClass1()
, ChildClass2()
등 및 인터페이스 iChild()
을 가지고 있습니다. ChildClass()
ParentClass()
에서 상속 및 구현 iChild()
다음 iChild()
- 인터페이스에서인터페이스 : 추상 상수가 필요합니까?
class ChildClass1
extends ParentClass
implements iChild {}
class ChildClass2
extends ParentClass
implements iChild {}
, 나는 몇 가지 상수 (주로 식별자와 일부 기능이 정의되는) 작성해야 할 것을 요구하고 싶습니다. 상수는 인터페이스에만 정의 될 수 있지만 구현 클래스에서는 재정의 할 수 없으므로 어떤 의미도 찾지 못했습니다. 내가 찾은 유일한 해결책은 iChild()
에 몇 개의 getter-functions을 정의하는 것으로, 필요한 값을 반환하지만 올바른 방법은 아닙니다. 이미 ParentClass()
에서 연장되었으므로 예를 들어 추상 클래스를 사용할 수 없습니다. 모든 ChildClasses에서 필수 상수의 정의를 확인하십시오.
이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?
업데이트 :이 코멘트에 대답하려면 - 날씬하고 내 말은 더 읽기와 다음에 :
class ChildClass1 {
const MY_NAME = "Foo Bar Name 1";
}
-- vs --
class ChildClass1 {
public function GetMyName() {
return "Foo Bar Name 1";
}
}
내가 더 많이 읽고 두 번째보다 더 이해할 수있는 첫 번째 예제를 찾을 수 있습니다. 유감스럽게도 현재 ChildClasses에서 MY_NAME을 설정하도록하는 방법이 없습니다.
그게 내가 현재 구현 된 방법이지만, 오히려 메서드보다는 상수를 호출하고 싶습니다. 그것은 더 희박하고 "더 정확한 느낌"입니다. 귀하의 답변을 주셔서 감사합니다. – Lars
그것은 어떻게 더 가늘고 "더 정확한 느낌"입니까? 어쨌든 서로 다른 구현체가 구현 클래스 이름에 묶이지 않고 다른 상수를 정의하게 만들지는 않을 것입니다. – cspray