본문 바로가기

WEBD/PHP

Class 사용법 정리 6.부모키워드

6.부모키워드 

 

 

부모클래스의메쏘드호출

 

보통부모클래스에서선언된메쏘드를자식클래스에서재정의하는이유는크게두가지가있습니다.

 

1.부모클래스메쏘드를완전히새롭게정의하기위하여

2.부모클래스메쏘드의기능에새로운기능을추가하기위하여

 

첫번째기능은부모클래스의메쏘드를무시하고메쏘드에새로운정의를함으로써부모클래스의메쏘드정의를숨기는것입니다.

그러나때로는부모클래스의메쏘드를모두지우는것보다는추가적인기능이필요한경우가있습니다.

이같은경우에는부모클래스의메쏘드와자식클래스에서재정의된메쏘드를모두수행하게될것입니다.

즉,재정의된메쏘드구문내에서부모클래스의메쏘드를호출할수있어야하며필요한기능만추가적으로작성하면될것입니다.

이럴때부모클래스의메쏘드를호출하기위해서사용하는키워드가 parent입니다.자바에서의키워드super와같은역할을하며이것은그메쏘드호출을상위클래스로전달합니다.

 

 

부모키워드 parent는 $this 키워드와비슷하게이클래스의부모클래스를나타내는위치지정자입니다.현재클래스의부모클래스를참조해야되는경우에는부모키워드 parent를사용할수있습니다.

class A {

  function example(){

    echo "클래스 A에 정의된 메쏘드 example.\n";

  }

}

 

class B extends A {

  function example(){

    echo "클래스 B에서 재정의된 메쏘드 example.\n";

    parent::example();

  }

}

 

$b =new B;

 

$b->example();

 

이예의출력결과를보면아래와같이나타날것입니다.

 

클래스 B에서재정의된메쏘드 example.

클래스 A에정의된메쏘드 example.

 

앞장범위연산자에서설명한대로키워드 parent 대신에extends다음에기술된부모클래스명을직접사용해도됩니다.

 

parent::example();  ------>  A::example();

 

키워드 parent를써야될이유

 

위의예에서부모클래스를 A가아닌 A1으로부터상속받도록수정하여야한다면아래와같이extends다음에있는부모클래스명을변경하는것으로모든작업은끝나게됩니다.만약 parent::example()가아닌 A::example()라고작성하였었다면이부분도 A1::example()라고수정하여야할것입니다.결국수정할때손이더많이가야하는것이지요.그러니부모클래스에있는메쏘드에접근하는경우라면키워드 parent를이용하는것이소스코드를관리하는데훨씬유리할것입니다.

class B extends A1 {

  function example(){

    echo "클래스 B에서 재정의된 메쏘드 example.\n";

    parent::example();

  }

}

 

$b =new B;

 

$b->example();

LIST

'WEBD > PHP' 카테고리의 다른 글

_SERVER, getenv 환경변수  (0) 2020.10.02
Class 사용법 정리 7. 매직함수  (0) 2020.10.02
Class 사용법 정리 5.범위연산자  (0) 2020.10.02
Class 사용법 정리 4. 생성자  (0) 2020.10.02
Class 사용법 정리 3. 클래스상속  (0) 2020.10.02