2011-08-18 2 views
0

PHP에서 OOP 응용 프로그램을 코딩하고 있습니다. 다른 클래스에서 상속받을 수퍼 클래스를 갖고 싶습니다.
클래스 자체를 직접 인스턴스화 할 수없는 방법이 있습니까?슈퍼 클래스는 확장 되기만을 의미하며 직접 인스턴스화되지 않았습니다.

좋아 : abstract 키워드가

class Mother {} 
class Child extends Mother{} 
$child = new Child();//no problemo 
$mother = new Mother();//throws exception or dies 
+0

너 한테 붉은 깃발을 얹어 라? – VolkerK

+0

을하려고하는지 모른 채 붉은 깃발을 제기 할 수 확장하지 –

답변

4

메소드 만 정의하고 구현은 정의하지 않는 추상 클래스를 사용할 수 있습니다. 이 메소드 구현을 구현해야하는 경우

abstract class Mother 
{ 
    public function doSomething(); 
} 

class Child implements Mother 
{ 
    public function doSomething() 
    { 
     echo 'Hello world'; 
    } 
} 

$mother = new Mother(); // won't work 
$child = new Child(); // works 
$child->doSomething(); // echoes hello world 

또는, 당신은 보호 생성자를 사용할 수 있습니다 (기능은 뭔가를하지만 그들은 오버로드 할 수 있습니다).

class Mother 
{ 
    protected function __construct() 
    { 
     echo "Hello World!"; 
    } 
} 

class Child extends Mother 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

$mother = new Mother(); // won't work, you're trying to access protected method 
$child = new Child(); // it'll work echoing "Hello World!" 
직접 질문과 관련된하지만`클래스 아이 Mother` 날에도 당신이 실제로 않는 이유도 말해 줄 수 ;-)
+0

당신은 또한 추상적 인 클래스 – wonk0

+0

덕분에 전체 메서드 구현을 할 수 있지만 정말 혼합해야합니다. 두, 나는 부모 클래스에 생성자와 일부 메서드를 구현하고 싶습니다 ... –

+0

미안하지만, 당신의 코멘트를 보지 못했습니다, 그것을 시도해 보겠습니다 –

3

.

abstract class Mother { } 
+0

고마워,하지만 내 부모 클래스의 생성자 및 일부 메서드를 구현하고 일부 내 자식에 과부하 싶습니다 –

관련 문제