PHP 객체지향 개인, 보호, 공개의 차이점에 대한 자세한 설명

小云云
풀어 주다: 2023-03-22 16:00:02
원래의
1735명이 탐색했습니다.

이 글은 주로 PHP 객체 지향의 비공개, 보호, 공개의 차이점에 대해 자세히 설명합니다. 도움이 되기를 바랍니다.

        private     protected       public本类内     Y           Y              Y
子类内     N           Y              Y
外部       N           N              Y
로그인 후 복사

참고:
Java에서는 속성/메소드 앞에 매개변수를 쓰지 않으면
즉, public/protected/private을 쓰지 않으면 가능합니다. 친화적입니다

PHP에서는 if public/protected/ private을 쓰지 않으면
public으로 이해하는 것이 좋습니다.

class Human {
    private $name = 'zhangsan';    protected $money = 3000;    public $age = 28;    public function say() {
        echo &#39;我叫&#39;,$this->name,&#39;<br />&#39;;        echo &#39;我有&#39;,$this->money,&#39;元钱<br />&#39;;        echo &#39;我今年&#39;,$this->age,&#39;岁&#39;;
    }
}class Stu extends Human {
    private $friend = &#39;小花&#39;;    public function talk() {
        echo &#39;我叫&#39;,$this->name,&#39;<br />&#39;;        echo &#39;我有&#39;,$this->money,&#39;元钱<br />&#39;;        echo &#39;我今年&#39;,$this->age,&#39;岁<br />&#39;;        
    }
}$ming = new Stu();echo $ming->age,&#39;<br />&#39;; // 28echo $ming->friend; //出错:因为类外不能调用privateecho $ming->money; //出错:因为类外不能调用protected属性$ming->talk();/**
出错:
Notice: Undefined property: Stu::$name in 。。。
我有3000元钱
我今年28岁

分析原因: Undefined property: Stu::$name 这是说明:stu对象 没有name属性
但昨天说,私有的不是可以继承吗?
是可以继承过来,但系统有标记,标记其为父类层面的私有属性.
因此无权调用,导致此错发生.


可以分析出:
protected 可以在 子类内访问

protected能在子类访问,本类内能否访问?
答:当然可以
로그인 후 복사
를 쓰지 않는 것이 좋습니다.

위 내용은 PHP 객체지향 개인, 보호, 공개의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿