<?
  /*
    ** 추상 클래스 **

    상위 클래스에서 메소드(껍데기)만 구현하고, 하위 클래스에서 그 메소드를
    구현해야 한다.

    CSpeak 클래스에서 speak()라는 추상 메소드를 구현 했으며, 하위 클래스의
    CKor, CEng에서 각각 실제 기능이 있는 speak() 메소드를 구현 하였다.
  */
  abstract class CSpeak
  {
    abstract public function speak();
   
    public function write()
    {
      $this->speak();
    }
    public function __set($name, $value) { $this->{$name}=$value; }
    public function __get($name) { return $this->{$name}; }
  }

  class CKor extends CSpeak
  {
    public function speak()
    {
      echo "한국어를 하다.<br>";
    }
  }

  class CEng extends CSpeak
  {
    public function speak()
    {
      echo "영어를 하다.<br>";
    }
  }
  /*
  class CJpn extends CSpeak
  {
    // 추상 메소드를 구현하지 않았기 때문에 에러가 난다.
  }
  */


  $kor = new CKor();
  $eng = new CEng();

  $kor->write();
  $eng->write();
?>

결과 :
한국어를 하다.
영어를 하다.

+ Recent posts