Python길라잡이
php public, private, protected의 정의 본문
액세스 한정자는 멤버변수나 메소드의 어디에서 액세스 할 수 있는지를 지정하는 것입니다. 지정에는 "public" "private" "protected"의 3 가지 중 하나를 지정합니다.
우선 멤버 변수에 지정된 경우를 살펴 보자.
class Test{ public 멤버 변수명; private 멤버 변수명; protected 멤버 변수명; }
위와 같이 멤버 변수의 앞에 액세스 한정자를 붙이는 것으로, 그 멤버 변수에 접근 가능 범위를 지정할 수 있습니다.
각각의 액세스 한정자마다 권한이 어떻게 되는지는 다음과 같습니다.
public 클래스내, 클래스외의 어디에서라도 액세스 가능 private 같은 클래스안에서만 액세스 가능 protected 같은 클래스 및 자식클래스에서 액세스 가능
「protected」클래스의 상속을 했을때 관계하기 때문에, 여기에서는 「public」과 「private」를 비교하겠습니다.
먼저「public」입니다.「public」은 기본적으로 액세스에 제한이 적용되지 않으므로 클래스에서도 클래스 외부에서 액세스가 허용됩니다. 구체적으로는 지금까지의 예제에서 보았듯이 클래스 내의 메소드 내에서 참조되거나 클래스에서 객체를 생성하고 객체에서 멤버 변수의 값을 획득하거나 변경하는 등 하는것이 가능합니다.
$tv = new Television(); $tv->channelNo = 9; $tv->setChannel(5); class Television { public $channelNo; function setChannel($channel){ $this->channelNo = $channel; } }
echo $tv->channelNo;
나오는 값은 5가 됩니다.
이에 대해 「private」을 지정한 경우에는 같은 클래스 내에서 액세스 할 수 있지만 클래스의 외부에서 액세스 할 수 없게 됩니다. 즉 클래스에서 객체를 생성하고 그 객체를 통해 멤버 변수의 값을 확인할 수 없습니다.
private를 사용할려면 다음처럼 하면 된다.
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
class Television{
private $channelNo;
function dispChannel(){
print('현재의 채널은'.$this->channelNo);
}
function setChannel($channel){
$this->channelNo = $channel;
}
}
$tv = new Television();
$tv->setChannel(8);
$tv->dispChannel();
?>
</body>
</html>
'PHP' 카테고리의 다른 글
php 클래스 확장 예 (0) | 2015.04.22 |
---|