선언한 클래스를 사용하려면 인스턴스를 생성합니다.
인스턴스를 생성하면 클래스의 객체 변수가 생성됩니다.
앞에서 선언한 클래스는 쉽게 말해 도장이라고 생각하시면 됩니다.
즉 하나의 틀
도장을 빨간색 인주에 찍으면 빨간색으로 찍히고, 초록색 인주에 찍으면 초록색으로 찍히고 ...
즉 위의 자동차클래스는 하나의 틀이라 생각하여 도요타 자동차도 만들 수 있고, 벤츠, 혼다, 포르쉐의 기술을 넣어 포르쉐 만들 수 있다는 의미입니다.
인스턴스는 클래스 외부에서 선언하며 new 키워드를 사용합니다.
$변수명 = new 클래스명;
그럼 앞의 강좌에 이어서...
앞에서 선언한 자동차 클래스의 인스턴스를 생성해 볼게요.
<?php class Car { public $wheels; public $doors = 4; protected $color = 4; private $size; private $company; public function run() { return "자동차가 달립니다."; } protected function stop() { return "자동차가 멈춥니다."; } protected function turn() { return "자동차가 회전합니다."; } } $honda = new Car; ?>
그럼 위의 코드에서 honda 인스턴스가 어떤 객체를 갖고 있는지 var_dump()를 통해서 확인해 볼까요?
<?php class Car { public $wheels; public $doors = 4; protected $color = 4; private $size; private $company; public function run() { return "자동차가 달립니다."; } protected function stop() { return "자동차가 멈춥니다."; } protected function turn() { return "자동차가 회전합니다."; } } $honda = new Car; var_dump($honda); ?>
실행해보니 다음과 같은 출력물이 나오네요.
object(Car)#1 (5) { ["wheels"]=> NULL ["doors"]=> int(4) ["color":protected]=> int(4) ["size":"Car":private]=> NULL ["company":"Car":private]=> NULL }
인스턴스를 통해서 프로퍼티와 메소드에 접근해볼까요? 접근하려면 ->를 사용합니다.
honda 변수는 클래스의 외부에서 선언했죠, 그러므로 public으로 선언된 프로퍼티와 메소드에 접근할 수 있어요.
$변수명 = new 클래스명; $변수명->프로퍼티;
주의할점은 프로퍼티 앞의 $는 빼고 사용합니다.
<?php class Car { public $wheels; public $doors = 4; protected $color = 4; private $size; private $company; public function run() { return "자동차가 달립니다."; } protected function stop() { return "자동차가 멈춥니다."; } protected function turn() { return "자동차가 회전합니다."; } } $honda = new Car; echo $honda->doors; ?>
doors프로퍼티의 값이 4를 확인 할 수 있죠.
이제 메소드를 불러볼까요?
$변수명 = new 클래스명; $변수명->메소드명();
메소드는 함수이기 때문에 메소드명 뒤에 꼭 ()를 붙여주세요. 안붙이면 프로퍼티로 인식해버립니다.
<?php class Car { public $wheels; public $doors = 4; protected $color = 4; private $size; private $company; public function run() { return "자동차가 달립니다."; } protected function stop() { return "자동차가 멈춥니다."; } protected function turn() { return "자동차가 회전합니다."; } } $honda = new Car; echo $honda->run(); ?>
위 코드의 결과
접근제한자에 따라서 어디서 사용가능 한지 불가한지 알아야 더 학습효과가 높습니다.
이를 테스트 해볼게요 그럴려면 우선 상속을 알아야겠죠? 상속을 알아야 protected를 사용해 볼 수 있으니까요.
그럼 다음에는 상속에 대해서 알아보고 그 다음에 접근제한자를 테스트해봅시다.
봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.
댓글 0개
정렬기준