제8 절 접근 방식[8]

PHP 5 의 접근 방식 은 클래스 구성원 에 대한 접근 을 제한 할 수 있 습 니 다.이것 은 PHP 5 에 추 가 된 기능 이지 만 많은 대상 언어 에 이미 존재 합 니 다.접근 방식 이 있어 야 신뢰 할 수 있 는 대상 프로그램 을 개발 하고 재 활용 가능 한 대상 라 이브 러 리 를 구축 할 수 있 습 니 다.C+자바 와 마찬가지 로 PHP 는 세 가지 접근 방식 이 있 습 니 다.Public,private 와 protected.같은 구성원 에 대한 접근 방식 은 그 중의 하나 일 수 있 습 니 다.방문 방식 을 가리 키 지 않 으 면 기본 적 인 접근 방식 은 Public 입 니 다.정적 구성원 에 게 접근 방식 을 가리 킬 수도 있 습 니 다.static 키워드 앞 에 접근 방식 을 두 십시오(예:Public static).Public 구성원 은 제한 없 이 접근 할 수 있 습 니 다.클래스 외부의 모든 코드 는 Public 속성 을 읽 고 쓸 수 있 습 니 다.스 크 립 트 의 어느 곳 에서 나 Public 방법 을 호출 할 수 있 습 니 다.PHP 의 이전 버 전에 서 는 모든 방법 과 속성 이 Public 입 니 다.이 는 대상 이 마치 구조 가 정교 한 배열 처럼 느껴 집 니 다.Private(개인)구성원 은 클래스 내부 에서 만 볼 수 있 습 니 다.private 속성 이 있 는 클래스 방법 외 에 값 을 바 꾸 거나 읽 을 수 없습니다.마찬가지 로 같은 클래스 에서 만 private 방법 을 사용 할 수 있 습 니 다.계승 하 는 하위 클래스 도 부모 클래스 의 private 구성원 에 게 접근 할 수 없습니다.주의 하 세 요.클래스 의 모든 구성원 과 클래스 의 인 스 턴 스 는 private 구성원 에 게 접근 할 수 있 습 니 다.예 를 들 어 6.8,equals 방법 은 두 개의 widget 을 비교 합 니 다.==연산 자 는 같은 유형의 두 대상 을 비교 합 니 다.그러나 이 예 에서 모든 대상 인 스 턴 스 는 유일한 ID.equals 방법 으로 name 과 price 만 비교 합 니 다.equals 방법 이 다른 Widget 인 스 턴 스 의 private 속성 에 어떻게 접근 하 는 지 주의 하 십시오.자바 와 C 는 이러한 조작 을 허용 합 니 다.Listing 6.8 Private members
name = $name; $this->price = floatval($price); $this->id = uniqid(); } //checks if two widgets are the same 검사 두 widget 이 같은 public function equals($widget){return(($this->name==$widget->name)AND($this->price==$widget->price);}} $w1 = new Widget('Cog', 5.00); $w2 = new Widget('Cog', 5.00); $w3 = new Widget('Gear', 7.00); //TRUE if($w1->equals($w2)) { print("w1 and w2 are the same
n"); } //FALSE if($w1->equals($w3)) { print("w1 and w3 are the same
n"); } //FALSE,==includes id in comparison if($w1==$w2)file://부등식,ID 가 다 르 기 때문에{print("w1 과 w2 are the same
n");}?>
 하위 클래스 는 부모 클래스 를 덮어 쓰 는 방법 으로 접근 방식 을 바 꿀 수 있 습 니 다.그럼 에 도 불구 하고 제한 이 있 습 니 다.만약 에 Public 클래스 의 구성원 을 덮어 쓰 면 그의 하위 클래스 에 서 는 Public 를 유지 해 야 합 니 다.proctected 멤버 를 덮어 쓰 면...proctected 를 유지 하거나 Public 로 변 할 수 있 습 니 다.Private 구성원 은 현재 클래스 에서 만 볼 수 있 습 니 다.부모 클래스 의 private 구성원 과 같은 이름 을 가 진 구성원 은 현재 클래스 에서 원래 와 다른 구성원 을 만 들 것 입 니 다.따라서,기술적 으로 private 멤버 를 덮어 쓸 수 없습니다.final 키 워드 는 구성원 방문 을 제한 하 는 또 다른 방법 입 니 다.하위 클래스 는 부모 클래스 에서 final 로 표시 하 는 방법 을 덮어 쓸 수 없습니다.final 키 워드 는 속성 에 사용 할 수 없습니다.
//haohhappy 주:PHP 5 의 대상 모델 이 아직도 완선 되 지 않 습 니 다.예 를 들 어 final 은 자바 에서 처럼 Data,Method,심지어 Class 를 사용 할 수 없습니다.

좋은 웹페이지 즐겨찾기