클래스(class)와 객체(object)
- 객체(objec)는 우리가 인식할 수 있는 사물
- 객체의 상태(state)와 행동(behavior)은 각각 프로퍼티(property)와 메소드(method)로 구현
- 객체(objec)를 만들어 내기위한 틀이나 설계도 같은 개념이 바로 클래스(class)
- 예)
class(클래스) = 차
property(프로퍼티) = 아반떼 or 노란색
method(메소드) = 브레이크
instance(인스턴스) = 내차
객체 지향 프로그래밍(OOP, Object-Oriented Programming)
- 모든 데이터를 객체(object)로 취급하며, 객체가 바로 프로그래밍의 중심
클래스 (class)
class Whale {
public $str;
private $i;
protected $boo;
private $name;
public function __construct($name){
$this->name = $name;
}
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";
}
public static function big(){
echo "매우 크다.";
}
}
상속 (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가 부모쪽에만 정의되있고 자식은 없다면 부모꺼를 쓰지만 부모쪽에 없고 자식쪽에만 있으면 자식꺼를 쓴다