关于类继承的一个问题
下面的这段代码:
<code>class Bar { public function test () { $this -> testPrivate (); $this -> testPublic (); } public function testPublic () { echo "Bar::testPublic\n" ; } private function testPrivate () { echo "Bar::testPrivate\n" ; } } class Foo extends Bar { public function testPublic () { echo "Foo::testPublic\n" ; } private function testPrivate () { echo "Foo::testPrivate\n" ; } } $myFoo = new foo (); $myFoo -> test ();</code>
输出为什么是
<code>Bar::testPrivate Foo::testPubli</code>
而不是
<code>Foo::testPrivate Foo::testPubli</code>
回复内容:
下面的这段代码:
<code>class Bar { public function test () { $this -> testPrivate (); $this -> testPublic (); } public function testPublic () { echo "Bar::testPublic\n" ; } private function testPrivate () { echo "Bar::testPrivate\n" ; } } class Foo extends Bar { public function testPublic () { echo "Foo::testPublic\n" ; } private function testPrivate () { echo "Foo::testPrivate\n" ; } } $myFoo = new foo (); $myFoo -> test ();</code>
输出为什么是
<code>Bar::testPrivate Foo::testPubli</code>
而不是
<code>Foo::testPrivate Foo::testPubli</code>
Foo类里的testPublic()方法重写了父类Bar的testPublic();
而testPrivate()的属性是private,只能被同一个类对象访问,哪怕不是同一个实例,既然只能被同一个类对象访问,那肯定也不会被重写,所以才会出现上面的输出
私有方法不会被继承,所以由于test()
方法是在父类里面定义的,其中引用的私有方法始终都是调用父类的,不管子类里有没有定义与其同名的方法。
这个方法域有关,在调用Bar
的test
方法时,php
的calling scope
是Foo
,所以public
的方法会因为重写被覆盖掉,而private
的方法只会依照可见性采用Bar
里的方法。
父类中的private方法子类不能重写与调用
Foo 类虽然重写了两个方法,但是没有重写test()方法。
而执行父类的test方法时,$this是调用父类的私有方法,即父类有此私有方法,则调用父类的。父类没有,才会用子类的。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
