1. 클래스 정의
// class 키워드를 이용해서 클래스를 정의한다.
class Car {
// 멤버 변수를 정의한다.
var $color;
var $speed;
// 생성자
function Car($color = 'red') {
// $this 를 사용해서 멤버에 접근한다.
$this->color = $color;
}
// 메소드를 정의한다.
// 메소드 오버로딩을 지원하지 않는다.
function speedUp($amount=1) {
$this->speed += $amount;
}
function getSpeed() {
return $this->speed;
}
}
2. 클래스 사용하기
$car = new Car('blue');
$car->speedUp();
echo($car->getSpeed());
3. 상속하기
class Super {
var $s_member;
function s_method() {
echo("call s_method()...\n");
}
}
// extends 키워드를 이용해서 상속한다.
// 다중상속은 지원하지 안는다.
class Child extends Super {
var $c_member;
function c_method() {
echo("call c_method()...\n");
}
}
$super = new Super();
$super->s_member = 10;
$super->s_method();
$child = new Child();
$child->c_member = 5;
$child->c_method();
// 상속받은 부모의 속성을 사용할 수 있다.
$child->s_member = 10;
$child->s_method();
// 부모객체는 자식의 속성을 사용할 수 없다.
$super->c_member = 3;
$super->c_method();
출력 결과)
call s_method()...
call c_method()...
call s_method()...
Fatal error: Call to undefined method Super::c_method() in D:\workspace\PHPTest\test.php on line 34
4. 오버라이딩
class Super {
var $member = '부모의 기본값';
function operation() {
echo("부모의 메소드 호출.\n");
echo("\$member의 값은 {$this->member}\n");
}
}
class Child extends Super {
var $member = '자식의 기본값';
function operation() {
echo("자식의 메소드 호출\n");
echo("\$member의 값은 {$this->member}\n");
echo("\n부모값 호출\n");
// 부모의 속성을 호출하기 위해서 parent 키워드와 :: 연산자를 사용한다.
parent::operation();
}
}
$super = new Super();
$super->operation();
echo("\n");
$child = new Child();
$child->operation();
출력 결과)
부모의 메소드 호출.
$member의 값은 부모의 기본값
자식의 메소드 호출
$member의 값은 자식의 기본값
부모값 호출
부모의 메소드 호출.
$member의 값은 자식의 기본값
5. 객체 비교하기
// 객체의 비교는 == 연사자를 이용하고, 속성들의 값이 동일할 때만 true 이다.
$car1 = new Car();
$car2 = new Car();
if($car1 == $car2) {
echo("TRUE...\n");
} else {
echo("FALSE...\n");
}
$car2->speedUp();
if($car1 == $car2) {
echo("TRUE...\n");
} else {
echo("FALSE...\n");
}
$car3 = new Car('blue');
if($car1 == $car3) {
echo("TRUE...\n");
} else {
echo("FALSE...\n");
}
출력결과)
TRUE...
FALSE...
FALSE...
'Web(웹) Study > PHP' 카테고리의 다른 글
PHP 문자열 처리 함수 (0) | 2011.01.10 |
---|---|
date함수의 포맷문자열 (0) | 2010.11.24 |
월의 마지막 날짜 구하기 (0) | 2010.11.24 |
날짜의 요일 구하기 (0) | 2010.11.24 |
php에 mssql을 사용하기 (0) | 2010.02.12 |