>백엔드 개발 >PHP 튜토리얼 >PHP 클래스의 상속과 메소드 오버로딩

PHP 클래스의 상속과 메소드 오버로딩

无忌哥哥
无忌哥哥원래의
2018-06-28 14:39:401541검색

//오토로더를 사용하여 클래스 로드: (짧은 버전)

spl_autoload_register(function($className){
    require './class/'.$className.'.php'; 
});

//$smartPhone = new SmartPhone('Apple','iPhone8', 5888);

#🎜 🎜#////현재 SmartPhone 클래스에는 이 세 가지 속성이 출력되지 않습니다.

//echo 'Brand: '.$smartPhone->brand.'< ; br>'; //정상: 외부에서 공개 접근 가능

//echo '모델: '.$smartPhone->model.'0c6dc11e160d3b678d68754cc175188a' //오류: 보호됨 현재 클래스 및 하위 클래스에서만 액세스 가능

//echo 'Price: '.$smartPhone->price. '0c6dc11e160d3b678d68754cc175188a';//오류: 비공개는 현재 클래스에서만 액세스 가능# 🎜🎜#

* 이러한 속성에 정상적으로 액세스할 수 있다면 어떨까요?

*

을 달성하는 데는 두 가지 옵션이 있습니다. * 1. 관련 속성에 대한 액세스를 제어합니다. 상위 클래스 MobilePhone 모두 공개로 설정

* 2. 상위 클래스 MobilePhone의 모든 관련 속성에 대한 액세스 제어를 보호됨으로 설정하고 하위 클래스 SmartPhone

에 쿼리를 생성합니다. * 우리는 두 번째 옵션을 채택합니다

$smartPhone = new SmartPhone(&#39;HUAWEI&#39;,&#39;P20&#39;, 5488,true,true);
//下面我们换一组数据来初始化对象,验证parent::__contrunctor()
$smartPhone = new SmartPhone(&#39;MI&#39;,&#39;MIX2&#39;, 3599,true,true);
//此时SmartPhone类中并无这三个属性,可以输出吗?
echo &#39;品牌: &#39;.$smartPhone->brand.&#39;<br>&#39;; 
echo &#39;型号: &#39;.$smartPhone->model.&#39;<br>&#39;; 
echo &#39;价格: &#39;.$smartPhone->price. &#39;<br>&#39;;
//下面输出二个在子类中扩展的属性
echo &#39;照相:&#39;.($smartPhone->camera?&#39;支持&#39;:&#39;没有&#39;).&#39;<br>&#39;;
echo &#39;上网:&#39;.($smartPhone->internet?&#39;支持&#39;:&#39;没有&#39;).&#39;<br>&#39;;
echo $smartPhone->call().&#39;<br>&#39;; //call()是父类中的方法
echo $smartPhone->game().&#39;<br>&#39;; //game()是子类中的方法

위 내용은 PHP 클래스의 상속과 메소드 오버로딩의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.