처음에는 두 메소드가 모두 생성자 작업을 호출하는 이유를 혼란스러워했지만 지금은 이해할 수 있다고 생각합니다. 확장 클래스는 부모 클래스의 메소드를 클래스 자체에서 선언 된 것처럼 상속하고 메소드는 부모 클래스에 있으므로 둘 다 작동해야합니다. 가있는 경우 이러한 동일한 코드를 실행 진정으로 동일한 방법으로, 또는 여부가 선호하는 방법 (parent
또는 this
통해) 메소드를 호출 (즉, 가장 좋은 방법), 그리고 경우 부모 메소드를 PHP로 호출하는 여러 가지 방법
미안하지만, 나는 이것을 생각하고있을 것입니다. 내가 질문을 오해하고하지 않는 한 (이 경우 개)에 서브 클래스가 그 방법을 덮어 쓸 수 있기 때문에 그것을 확장 않기 때문에
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;
"확장"하지 않고 어떻게합니까? 클래스 "인간"안에 몇 가지 클레아 "다리"가 있지만 부모의 "인간"기능이 필요 없기 때문에 실제로 확장 할 필요는 없습니다. 이제'human ='$ leg = new leg()'를 만들었다면, 어떻게 leg 인스턴스'$ leg' 내부에서 인간의 함수를 호출 할 수 있을까요? – user151496
@ user151496 다리는 인간의 하위 클래스가 아닙니다. 인간은 다리가 많지만 다리는 인간이 아닙니다. 그러므로 다리는 인간이 아니기 때문에 인간에게서 상속받은 다리의 종류는 없어야합니다. – Beetle
Leg를 Leggy 인터페이스를 가진 클래스로 만들겠습니까? 아니면 인간 클래스가 Leggy를 구현하도록할까요? 다리가 인간에게만 독점적이지 않다는 것을 어떻게 정의 할 수 있습니까? 인간의 다리는 사람의 독창적 인 속성이며 인간의 일반적인 재산입니다. – Anthony