/*
-------------------------------- ----------------------------------
| = 이 글은 Haohappy<
| = 해당 장의 클래스 및 개체에 대한 참고 사항
| = 개인적인 경험을 바탕으로 작성되었습니다.
| = 불필요한 문제를 피하기 위해 재인쇄하지 마십시오. 감사합니다
| 비판과 수정을 환영하며, 모든 PHP 애호가들과 함께 발전하기를 바랍니다!
| = PHP5 연구 센터: http://blog.csdn.net/haohappy2004
--------- ----- ------------------- ----- ---------------
*/
8절 - 접근 방법
PHP5의 접근 방법은 클래스 멤버에 대한 접근을 제한하는 것을 허용합니다. PHP5의 새로운 기능이지만 이미 많은 객체 지향 언어에 존재합니다. 액세스를 통해 안정적인 객체 지향 애플리케이션을 개발하고 재사용 가능한 객체 지향 클래스 라이브러리를 구축할 수 있습니다.
PHP에는 C 및 Java와 마찬가지로 세 가지 액세스 방법이 있습니다. : public, private, protected 중 하나일 수 있습니다. 액세스 방법을 지정하지 않으면 기본 액세스 방법인 put을 지정할 수도 있습니다. static 키워드 앞에 접근 메소드(예: public static)
공개 멤버는 제한 없이 액세스할 수 있습니다. 클래스 외부의 모든 코드는 공개 속성을 스크립트 내 어디에서나 호출할 수 있습니다. 이전 버전의 PHP에서는 모든 메소드와 속성이 공개되어 객체가 잘 구조화된 배열처럼 느껴졌습니다.
비공개 멤버는 클래스 내부에서만 볼 수 있습니다. 비공개 속성의 값은 클래스 외부에서 변경하거나 읽을 수 없습니다. 마찬가지로 동일한 클래스의 메서드만 비공개 메서드를 호출할 수 있습니다. 상속된 하위 클래스는 상위 클래스의 비공개 멤버에 액세스할 수 없습니다.
클래스의 모든 멤버는 액세스할 수 있습니다. 비공개 멤버에 액세스합니다. 예 6.8을 참조하세요. == 연산자는 동일한 클래스의 두 개체를 비교하지만, 이 예에서는 각 개체 인스턴스가 고유한 ID를 갖습니다. equals 메소드는 다른 Widget 인스턴스의 전용 속성에 액세스합니다.
목록 6.8 전용 멤버
코드 복사 다음과 같습니다:
클래스 위젯
{
비공개 $name;
비공개 $price;
비공개 $id;
공개 함수 __construct($name, $price)
{
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
//두 위젯이 동일한지 확인합니다. > return(($this->name == $widget->name)AND
($this->가격 == $widget->가격));
}
}
$w1 = new Widget('Cog', 5.00);
$w2 = new Widget('Cog', 5.00);
$w3 = new Widget('기어', 7.00);
//TRUE
if($w1->equals($w2))
{
print("w1 과 w2는 동일
n");
}
//FALSE
if($w1->equals($w3))
{
print("w1 및 w3은 동일
n");
}
//FALSE, == 비교할 ID 포함
if($w1 == $w2) //不等,因为ID불동
{
print("w1 및 w2 동일합니다
n");
}
?>
如果你对면向对象编程不熟悉, 你可能想知道는 비공개로 진행됩니다. 你可以回忆一下封装回忆一下封装와耦합적인想法, 这在本章开头我们有讨论过. Private 成员에는 助于封装数据가 있습니다. 이 회사는 외부 팀의 대변인이 아닙니다. 같은 종류의 송곳니가 있습니다. 외부의 혁신적인 대안은 없습니다.
当然, 大부分private属性仍然可以被외부 代码共享. 공개 방법을 사용하는 경우에는 get(获取属性值), 另一个是set(设置属性值)이 있습니다. 构造函数也接受属性初始值. 당신이 원하는 대로 여행을 떠날 수 있습니다. 이 방법을 사용하면 올바른 방법을 찾을 수 있습니다. 6.8중에서 가격을 확인하세요. floatval()).
보호됨(受保护적)은 중형의 모든 방법과 보안을 위한 중대형 방법입니다. 공개적으로 보호되는 방법은 없습니다.需要很清楚它的父类的结构才行.
代码如下: 클래스 위젯
{
비공개 $name;
비공개 $price;
비공개 $id;
공개 함수 __construct($name, $price)
{
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
//두 개의 위젯이 동일한지 확인합니다. == $widget->이름 )AND
($this->가격 == $widget->가격));
}
보호된 함수 getName()
{
return($this->name);
}
}
class Thing extends Widget
{
private $color;
공용 함수 setColor($color)
{
$this->color = $color;
}
공용 함수 getColor()
{
return($this->color);
}
공용 함수 getName()
{
return(parent::getName());
}
}
$w1 = new Widget('Cog', 5.00);
$w2 = new Thing('Cog', 5.00);
$w2->setColor('노란색');
//TRUE (여전히!) 结果仍然为真
if($w1->equals($w2))
{
print("w1과 w2는 동일합니다
n ");
}
//print Cog 输出 Cog
print($w2->getName());
?>
일대일 전자 类可能改变过覆写父类方法来改变方式, 尽管如此, 仍然는 모두 하나입니다. 如果你覆写了一个public类成员, 他子类中必须保持public. 如果你覆写了一个protected成员, 它可保持protected或变成成当前类中可见. 声明一은 类中父类의 개인 회사와 같은 이름의 회사가 아닌 다른 회사의 회사입니다. 因此, 技术上你不能覆写一个private成员.
최종 제조 방법은 다음과 같습니다. 子类不能覆写父类中标识为최종방법. 최종적으로는 문자가 사용되지 않습니다.
以上就介绍了二氧化锰와浓盐酸反应方程式 第八节--访问方式,包括了two盐酸反应方程式方面的内容,希望对PHP教程에는 朋友有所帮助이 있습니다.