[ php ] php 객체지향 - 클래스 정의, 객체 생성, 접근, 생성자, 소멸자
페이지 정보
작성자 웹지기 댓글 0건 조회 7,655회 작성일 19-05-16 17:57본문
클래스 정의
- 객체는 class 키워드로 클래스를 정의
- 클래스의 정의에는 클래스이름(대문자 소문자 구분)과 속성 메소드가 포함
- 클래스는 데이터를 저장하는 속성 값을 가지고 있슴.
- 데이터를 가공 / 처리하기 위한 메소드를 포함
객체
- 자바와 흡사하고 trait(특성)이 추가 되었슴.
- 클래스 외부에서 클래스의 static(고정), constant(상수)에 접근할 때,
클래스 내부에서 상속 계층상의 프로퍼티나 메소드에 접근 할 때는 ->가 아니라 ::를 사용한다
= 접근제한 키워드
public, protected, private
= 생성자, 소멸자
function __construct( ) { }
function __destruct( ) { }
= 객체생성은 new 키워드를 사용
<?php
$test = new User; //new키워드로 User객체를 생성
class User
{
public $id, $name; //public로 변수선언
function printUser( ) //User클래스에 printUser 메소드 선언
{
print_r($this); //User클래스 출력
}
}
?>
= 접근
객체의 속성에 접근하는 방법은 -> 를 사용
new로 생성한 User 클래스를 대입한 $test의 name의 속성에 접근 방법은 $test -> name
객체메소드 printUser() 접근 방법은 $test -> printUser( )
속성이나 메소드 접근시 "$"를 붙이지 않음
= 복제
새로운 메모리를 할당하는 것이 아닌 객체의 주소값을 전달하는 것
새로운 객체의 복제는 clone 키워드를 사용
<?php
$test = new User(); //User객체를 생성해서 test변수에 대입
$test -> name = "No"; //test객체의 name속성에 "No" 대입
$test2 = clone $test; //test객체를 복제하여 test2에 대입
$test2 -> name = "Hahaha"; //test2 객체의 name속성에 "Hahaha" 대입
echo "--- test name ---".$test -> name."<br>"; //No출력
echo "=== test2 name ===".$test2 -> name ."<br>"; //Hahaha출력
?>
상속
- extends 단일상속만 허용
- implements 인터페이스는 여러개 받아 구현가능
- final 오버라이드나 상속을 금지
= trait
상속, 인터페이스, 트레이트
오버라이드 순위 " 클래스 메소드 > 트레이트 메소드 > 상속한 메소드 "
trait UserTrait
{
public function userTraitMethod( )
{
}
}
class UserClass
{
use UserTrait, ...;
....
}
댓글목록
등록된 댓글이 없습니다.