선생님을 위한 프로그래밍 수업

상속 - 접근제어자 protected

토픽 선생님을 위한 프로그래밍 수업 > 웹 애플리케이션 만들기 > PHP

수업소개

변수에 대해서 상속 관계에 있는 메소드에서는 접근할 수 있지만, 인스턴스를 통해서는 직접적으로 접근하는 것을 막고 싶을 때 protected를 사용하면 됩니다. 

수업

코드 

<?php
class ParentClass{
  public $_public = '<h1>public</h1>';
  protected $_protected = '<h1>protected</h1>';
  private $_private = '<h1>private</h1>';
}
class ChildClass extends ParentClass{
  function callPublic(){
    echo $this->_public;
  }
  function callProtected(){
    echo $this->_protected;
  }
  function callPrivate(){
    echo $this->_private;
  }
}
$obj = new ChildClass();
echo $obj->_public;
//echo $obj->_protected;
echo $obj->_private;
$obj->callPublic();
$obj->callProtected();
$obj->callPrivate();
?>

 

댓글

댓글 본문
  1. 24.01.07 protected
  2. 드림보이
    2022.01.25. 상속 - 접근제어자 protected 파트 수강완료
  3. jeisyoon
    2021.08.10 Inheritance(Protected) - OK

    $obj = new ChildClass();

    echo $obj->_public; // OK : instance O
    echo $obj->_protected; // Parse Error : instance X
    echo $obj->_private; // Warning Error : instance X

    $obj->callPublic(); // OK : Method O
    $obj->callProtected(); // OK : Method O
    $obj->callPrivate(); // Warning Error : Method X
  4. 안명철
    좋은 강의 감사합니다,
    상당히 난해 합이다. 어려운 개념 입니다.
  5. fletbel
    보통 private변수에 붙이는데 public이나 protected에 붙이는건 예약어와 겹쳐서 사용이 안되거나 외부코드와 같아서 분리를 위해 쓰는 경우가 간혹 있지만 좋은 방법은 아니라고 생각합니다. 저는 클래스의 멤버변수가 private접근자인 경우에만 붙입니다. 표준명명법은 다음분이..
    대화보기
    • 웅이
      echo $obj->_public;
      echo $obj->_private;
      이런것 처럼 class 내의 변수에 접근할때는 $를 빼는게 원칙인가요?
    • 레이
      감사합니다.!

      user가 로그인해서 보이는 dashboard data도 이 private기능을 사용해서 구현하는게 맞는지 궁금합니다.
      혹자 개발해보려고 하는데 검색키워드를 어떤걸로 구글링 해야하는지 잘 몰라서요..
    • mirong1
      좋은 강의를 만들기 위해 들어간 노력에 너무 감사드립니다. !!
    • under
      변수명에 언더바를 사용하는 이유가 있을까요?
    • dufuqsls
      잘봣습니다@@