PHP 클래스(class)

서린·2024년 3월 20일
0

greenstudy

목록 보기
26/44
post-thumbnail

클래스(class)와 객체(object)

  • 객체(objec)는 우리가 인식할 수 있는 사물
  • 객체의 상태(state)와 행동(behavior)은 각각 프로퍼티(property)와 메소드(method)로 구현
  • 객체(objec)를 만들어 내기위한 틀이나 설계도 같은 개념이 바로 클래스(class)
  • 예)
    class(클래스) = 차
    property(프로퍼티) = 아반떼 or 노란색
    method(메소드) = 브레이크
    instance(인스턴스) = 내차

객체 지향 프로그래밍(OOP, Object-Oriented Programming)

  • 모든 데이터를 객체(object)로 취급하며, 객체가 바로 프로그래밍의 중심

클래스 (class)

  • 예제
class Whale {
    // 프로퍼티
    // 접근 제어 지시자
    // public : class 외부, 내부 어디에서 접근가능
    public $str;
    // private : class 내부에서만 접근 가능, 외부는 접근 불가능
    private $i;
    // protected : class 내에서만 접근 가능, 외부에서는 접근 불가능, 단 상속 관계에서는 접근 가능
    protected $boo;

    private $name;

    // 생성자 메소드
    public function __construct($name){ // 순서 2
       $this->name = $name;             // 순서 3
    }

    // getter, setter : private이나 protected로 설정된 프로퍼티에 접근을 위해 사용하는 메소드
    
    public function getName() {
        return $this->name;
    }
    public function setName($name){
        $this->name =$name;
    }

    // 메소드
    public function swim($opt){
        echo $opt.$this->name." 헤엄 칩니다.\n"; 
    }
    public function breathe(){
        echo $this->name." 호흡 한다.\n";
    }
    
    // static 메소드 : 인스턴스 생성 없이 사용할 수 있는 메소드 / this랑 static은 같이못씀
    public static function big(){
        echo "매우 크다.";
    }
}
  • 인스턴스 생성
    $객체이름 = new 클래스이름(인수1, 인수2, ...);
    // 위의 예제를 인스턴스 생성을 할려면
    $objWhale = new whale("고래");  
  • 클래스 멤버에 접근
    $objWhale->swim("");

상속 (Extends)

  • 부모클래스의 자원을 자식클래스가 물려받아 사용하거나 재정의 하는것
  • 예제
class Parents {
    protected $name;
    
    public function __construct(){
        echo "부모 클래스 생성자 실행\n";
    }

    private function home(){
        echo "집은 부모님 겁니다.";
    }
    public function car(){
        echo "차는 부모님 자식 다 씁니다.\n";
    }
}

class Child extends Parents {
    public function __construct($name){
        $this->name = $name;
        echo "자식 클래스 생성자 실행\n";
    }
    public function dog(){
        echo "강아지는 제겁니다.";
    }
    
    // 오버라이딩 : 부모가 가지고 있는 메소드를 자식이 재정의해서 쓰는것
    public function car(){
        echo "이 자동차는 이제 제겁니다.\n";
    }
    
    public function getName(){
        echo $this->name;
    }
}
$obj = new Child("홍길동");
$obj->car();
$obj->getName();
  • Child란 클래스가 Parents 클래스를 상속 받아서 자식 클래스가 생성된다 .
  • 오버라이딩은 부모 클래스에 car라는 함수가 있는데 자식에도 car라는 함수가 있어서 자식껄 로 재정의되서 자식꺼에서 써진다
    그리고 private로 메소드를 하게되면 자식클래스에서 쓸수없다 public메소드만 가능
  • construct가 부모쪽에만 정의되있고 자식은 없다면 부모꺼를 쓰지만 부모쪽에 없고 자식쪽에만 있으면 자식꺼를 쓴다
profile
개발 일기 ( •̀ ω •́ )✧

0개의 댓글

관련 채용 정보