클래스 & 객체
클래스와 객체의 차이
첫번째 예시로 클래스와 객체의 차이를 알아보자.
|
|
두번째 예시는 어떨까 확인해보자.
|
|
이런식으로 클래스는 객체의 템플릿이고 객체는 클래스의 인스턴스다.
개별 객체가 작성되면 클래스의 모든 속성과 동작을 상속하지만 각 객체는 속성에 대해 서로 다른 값을 갖는다.
클래스 정의
클래스는 class 키워드 뒤에 클래스 이름과 한 쌍의 중괄호({})를 사용하여 정의된다.
모든 속성과 메서드는 중괄호 안에 들어간다.
클래스에서 변수는 속성이라고 하고 함수는 메서드라고 한다.
class Fruit { // 코드 입력 }
이런식으로 입력한다.
클래스 선언 예시
두 개의 메서드로 구성된 클래스를 선언해보자.
PHP
<?php class Fruit { public $name; public $color; function set_name($name) { $this->name = $name; } function get_name() { return $this->name; } } ?>
객체 정의
클래스는 객체 없이는 아무것도 아니다.
클래스에서 여러 개체를 만들 수 있다.
각 개체에는 클래스에 정의된 모든 속성과 메서드가 있지만 속성 값은 서로 다르다.
클래스의 객체는 new키워드를 사용하여 생성된다.
객체 선언 예시
PHP
<?php class Fruit { public $name; public $color; function set_name($name) { $this->name = $name; } function get_name() { return $this->name; } function set_color($color) { $this->color = $color; } function get_color() { return $this->color; } } $apple = new Fruit(); $apple->set_name('Apple'); $apple->set_color('Red'); echo "Name: " . $apple->get_name(); echo "
"; echo "Color: " . $apple->get_color(); ?>
기본 예시
Name: AppleColor: Red
$this 키워드
$this 키워드는 현재 개체를 참조하며 메서드 내에서만 사용할 수 있다.
클래스 내부
set_name() 메서드를 추가하고 $this를 사용한다.
PHP
<?php class Fruit { public $name; function set_name($name) { $this->name = $name; } } $apple = new Fruit(); $apple->set_name("Apple"); echo $apple->name; ?>
기본 예시
Apple클래스 외부
속성 값을 직접 변경한다.
PHP
<?php class Fruit { public $name; } $apple = new Fruit(); $apple->name = "Apple"; echo $apple->name; ?> ?>
기본 예시
Appleinstanceof
키워드를 사용하여 instanceof객체가 특정 클래스에 속하는지 확인할 수 있다.
PHP
<?php class Fruit { public $name; public $color; function set_name($name) { $this->name = $name; } function get_name() { return $this->name; } } $apple = new Fruit(); var_dump($apple instanceof Fruit); ?>
기본 예시
bool(true)참고
W3C School - PHP What is OOP?
W3C School - PHP OOP - Classes and Objects
W3C School - PHP Tryit Editor