php子类重载父类私有方法的疑问
<?php class A{ private function test(){ echo "testA"; } } class B extends A{ public function test($a){ echo "testB".$a; } } $var1=new B; $var1->test(10);?>
上述代码中:
子类B虽然继承了A,但是A中的test()是私有方法,原则上应该是不会被继承的,为什么在B中定义一个同名但是参数不同的test()会报错呢,这也算是重载的错误吗?
回复讨论(解决方案)
<?php class A{ private function test(){ echo "testA"; } } class B extends A{ private function test($a){ echo "testB".$a; } public function test1($a){ $this->test($a); } } $var1=new B; $var1->test1(10);?>
而将B中的public该为private就不会报错
你看看错误信息不就知道怎么回事了吗?
你看看错误信息不就知道怎么回事了吗?
我知道错误的原因是重写,但是有两个疑问:
1.父类的private方法不是不会被继承吗,为什么会导致重写?
2.为什么子类中public和protected会报错,而private不会报错?
class B extends A{ public function test($a){ echo "testB".$a; }}
能麻烦解释一下吗?
不是重写,是覆盖
覆盖的条件是保护方式和参数一致
这种从 java 硬拽过来的玩意,违背了 php 的初衷,并最终导致 php 的死亡
连 C# 都在推出“动态语言”了,php 还逐步静态化,这不是倒退吗?
不是重写,是覆盖
覆盖的条件是保护方式和参数一致
这种从 java 硬拽过来的玩意,违背了 php 的初衷,并最终导致 php 的死亡
连 C# 都在推出“动态语言”了,php 还逐步静态化,这不是倒退吗?
重写和覆盖不是一个意思吗?
可能我没表达清楚,我的意思是父类中的private test()方法不是不可以继承吗,那么在子类中理论上我可以起一个名为test()的函数,并且参数列表也是任意的,可是这段代码会报错。 所以是不是不能继承的方法也存在重写?
<?php class A{ private function test(){ echo "testA"; } } class B extends A{ public function test($a){ echo "testB".$a; } } $var1=new B; $var1->test(10);?>
而下面这段代码在子类中,如果是重写,那么为什么参数列表不一致正确呢?
<?php class A{ private function test(){ echo "testA"; } } class B extends A{ private function test($a){ echo "testB".$a; } public function test1($a){ $this->test($a); } } $var1=new B; $var1->test1(10);?>
B::test 是重新定义,或是说是重写(覆盖)
重载,在 php 中是不支持的
至于说那些所谓的语法检查,那都是胡扯的,硬拽进来拖慢 php 速度用的
B::test 是重新定义,或是说是重写(覆盖)
重载,在 php 中是不支持的
至于说那些所谓的语法检查,那都是胡扯的,硬拽进来拖慢 php 速度用的
就是说B::test()跟父类没有半毛钱关系对吧,谢谢了。
对的,对的,对的
B::test 是重新定义,或是说是重写(覆盖)
重载,在 php 中是不支持的
至于说那些所谓的语法检查,那都是胡扯的,硬拽进来拖慢 php 速度用的
或者说此处不存在重写,只是在B类中定义了一个新的函数test()而已。
但形式上是重写了

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Nach seiner hochkarätigen Akquisition durch Facebook im Jahr 2012 nahm Instagram zwei APIs für den Einsatz von Drittanbietern ein. Dies sind die Instagram -Graph -API und die Instagram Basic Display -API. Ein Entwickler, der eine App erstellt, die Informationen von a benötigt

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio
