//오토로더를 사용하여 클래스 로드: (짧은 버전)
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('HUAWEI','P20', 5488,true,true); //下面我们换一组数据来初始化对象,验证parent::__contrunctor() $smartPhone = new SmartPhone('MI','MIX2', 3599,true,true); //此时SmartPhone类中并无这三个属性,可以输出吗? echo '品牌: '.$smartPhone->brand.'<br>'; echo '型号: '.$smartPhone->model.'<br>'; echo '价格: '.$smartPhone->price. '<br>'; //下面输出二个在子类中扩展的属性 echo '照相:'.($smartPhone->camera?'支持':'没有').'<br>'; echo '上网:'.($smartPhone->internet?'支持':'没有').'<br>'; echo $smartPhone->call().'<br>'; //call()是父类中的方法 echo $smartPhone->game().'<br>'; //game()是子类中的方法
위 내용은 PHP 클래스의 상속과 메소드 오버로딩의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!