本文实例讲述了PHP面向对象的特性。分享给大家供大家参考,具体如下:
Demo1.php
<?php header('Content-Type:text/html; charset=utf-8;'); //创建一个电脑类 class Computer { //什么叫做类内,就是创建类的花括号内的范围叫做类内,其他地方则类外。 //public 是对字段的公有化,这个字段类外即可访问,赋值和取值 public $_name = '联想'; } $computer = new Computer(); $computer -> _name = 'Dell'; echo $computer->_name; ?>
Demo2.php
<?php header('Content-Type:text/html; charset=utf-8;'); class Computer { //private 是私有化,即对字段进行封装的操作,类外无法访问,取值和赋值都不能操作 private $_name = '联想'; } $computer = new Computer(); echo $computer->_name; ?>
Demo3.php
<?php header('Content-Type:text/html; charset=utf-8;'); class Computer { private $_name = '联想'; //这个时候我采用一个公共对外的方法来访问私有字段 //因为私有字段只能在类内访问,而对外的公共方法是类内的。 //更而公共方法又是公共的,所以类外又可访问。 public function _run(){ //字段在类内调用的时候必须是类 -> 字段,而$_name只是一个普通变量而已。 //字段在类外调用的方法是对象 -> 字段,而类内就必须使用 Computer -> _name //但是在本类中,可以使用一个关键字来代替字来代替 Computer ,那就是 $this echo $this ->_name; } } $computer = new Computer(); $computer -> _run(); ?>
Demo4.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { private $name; private $model; private $cpu; private $keyboard; private $show; private $zb; //必须写个对外的入口,才可以取到 public function getName() { return $this->name; } //必须写一个对内的入口,对私有字段进行赋值 public function setName($name) { //这里的 $name 只是一个变量而已,参数而已 //$this->name 才是类的字段 $this->name = $name; } } $computer = new Computer (); echo $computer->getName(); $computer->setName('Dell'); echo $computer->getName(); ?>
Demo5.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { private $_name; private $_model; private $_cpu; //当类外的对象直接调用私有字段时,会跟着去检查是否有拦截器, //如果直接对 $_name 进行赋值,那么__set 方法就会拦截住,就不会报错了。 //采用拦截器进行赋值和取值 //赋值 private function __set($_key,$_value){ //采用$_key = '_name',那么 $_value = '联想'; //$this ->_name = '联想'; $this ->$_key = $_value; } //取值 private function __get($_key){ return $this -> $_key; //如果 $_key = '_name' 那么 $this -> _name; //如果 $_key = '_cpu' 那么 $this -> _cpu; //如果 $_key = '_model' 那么 $this -> _model; } } $computer = new Computer (); $computer->_name = '联想'; $computer->_cpu = '四核'; $computer->_model = 'i7'; echo $computer->_name; echo $computer->_cpu; echo $computer->_model; ?>
Demo6.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { private $_name; private $_model; private $_cpu; //__set 和 __get 方法私有了,还是可以执行,是因为 //因为目前程序的指针已经在类内了。而类内可以执行封装的方法 //类内执行私有方法,不会出现任何错误。 //它只需要间接的拦截就可以了。拦截是在内类执行的。 //说白了,__set() 和 __get() 是 PHP 内置的方法,具有一定的特殊性 private function __set($_key, $_value) { $this->$_key = $_value; } private function __get($_key) { return $this->$_key; } } $computer = new Computer (); $computer->_name = '联想'; $computer->_cpu = '四核'; $computer->_model = 'i7'; echo $computer->_name; echo $computer->_cpu; echo $computer->_model; ?>
Demo7.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { const NAME = 'DELL'; } //常量的输出方法 类::常量 echo Computer::NAME; //DELL ?>
Demo8.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { public $_count = 0; public function _add(){ $this -> _count++; //$_count = $_count+1 $_count++ } } //做一个累计的效果 $computer1 = new Computer(); $computer1 ->_add(); $computer1 ->_add(); $computer1 ->_add(); echo $computer1 -> _count; echo '<br />'; $computer2 = new Computer(); $computer2 ->_add(); $computer2 ->_add(); $computer2 ->_add(); echo $computer2 -> _count; ?>
Demo9.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { public static $_count = 0; public function _add(){ //如果是静态成员字段,那么就应该用 self 来调用,而不是 $this self::$_count++; } } //做一个累计的效果 $computer1 = new Computer(); $computer1 ->_add(); echo Computer::$_count; $computer1 ->_add(); echo Computer::$_count; $computer1 ->_add(); echo Computer::$_count; echo '<br />'; $computer2 = new Computer(); $computer2 ->_add(); echo Computer::$_count; $computer2 ->_add(); echo Computer::$_count; $computer2 ->_add(); echo Computer::$_count; ?>
Demo10.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { public static $_count = 0; public static function _add(){ self::$_count++; } } Computer::_add(); Computer::_add(); Computer::_add(); echo Computer::$_count; ?>
Demo11.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { } $computer = new Computer(); echo $computer instanceof Computer; ?>
Demo12.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); //这是父类,电脑类 class Computer { public $_name = '联想'; public function _run(){ echo '联想在运行!'; } } //子类,笔记本电脑类 class NoteComputer extends Computer { } $noteComputer = new NoteComputer(); echo $noteComputer -> _name; $noteComputer -> _run(); ?>
Demo13.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { public $_name = '联想'; public function _run(){ echo '联想在运行!'; } } class NoteComputer extends Computer { //我不需要父类的字段和方法,那么可以采用重写的方法覆盖掉父类的字段和方法 public $_name = 'Dell'; public function _run(){ echo 'Dell在运行!'; } } $noteComputer = new NoteComputer(); echo $noteComputer -> _name; $noteComputer -> _run(); ?>
Demo14.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { //私有化,但是无法被子类继承,这个时候就应该用受保护的修饰符来封装 protected $_name = '联想'; protected function _run(){ return '联想在运行!'; } } class NoteComputer extends Computer { public function getTop() { echo $this->_name; echo $this->_run(); } } $noteComputer = new NoteComputer(); $noteComputer -> getTop(); ?>
Demo15.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); class Computer { public $_name = '联想'; public function _run(){ return '联想在运行!'; } } class NoteComputer extends Computer { //我子类已经覆盖了父类的字段和方法, //但是我又要调用父类的字段和方法,那怎么办呢? public $_name = 'Dell'; public function _run(){ echo 'Dell在运行!'; echo parent :: _run(); } } $noteComputer = new NoteComputer(); echo $noteComputer -> _name; $noteComputer -> _run(); //DellDell在运行!联想在运行! ?>
Demo16.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); //final 如果加在类前面,表示这个类不能被继承 // final class Computer { // } class Computer { //final 如果加在方法前面,表示不能够重写些方法 final public function _run(){ } } class NoteComputer extends Computer { public function _run(){ } } $noteComputer = new NoteComputer(); ?>
Demo17.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); //创建一个抽象类,只要在 class 前面加上 abstract 就是抽象类了 //抽象类不能够被实例化,就是创建对象 //只在类里面有一个抽象方法,那么这个类必须是抽象类,类前面必须加上 abstract abstract class Computer { public $_name = '联想'; //抽象类里创建一个抽象方法 //抽象方法不能够实现方法体的内容 abstract public function _run(); //我在抽象类里能否创建一个普通方法 public function _run2(){ echo '我是父类的普通方法'; } } //类不能够实现多继承,只支持单继承。 //抽象类是给子类用来继承的,实现一种规范和资源的共享 class NoteComputer extends Computer { //抽象类的抽象方法,子类必须重写,不然会报错。 //抽象类里的普通方法不需要重写,子类会直接继承下来 public function _run(){ echo '我是子类的方法'; } } $noteComputer = new NoteComputer(); $noteComputer -> _run(); $noteComputer -> _run2(); echo $noteComputer -> _name; ?>
Demo18.php
<?php /* * 到底应该用抽象类还是接口呢 * 如果你要继承多个接口的方法规范,那么就用接口好了。 * 如果你要共享一个方法体内容,那么就用抽象类。 * */ header ( 'Content-Type:text/html; charset=utf-8;' ); //创建一个接口 //接口也不能被实例化 //接口是为了规范实现它的子类,以达到统一的目的。也可以共享数据 interface Computer { //成员字段必须是变量 const NAME = '成员 '; //接口里的所有方法都是抽象方法,不能够写方法体 //并且接口的抽象方法不需要写 abstract public function _run(); public function _run2(); } interface Computer2 { public function _run3(); } //子类继承接口的说法,叫做实现,接口可以多实现 class NoteComputer implements Computer,Computer2 { public function _run() { echo '我重写了run'; } public function _run3() { echo '我重写了run3'; } public function _run2() { echo '我重写了run2'; } } $noteComputer = new NoteComputer(); $noteComputer -> _run(); $noteComputer -> _run2(); $noteComputer -> _run3(); echo NoteComputer::NAME; //接口 :: 常量 //echo Computer::NAME; ?>
Demo19.php
<?php header ( 'Content-Type:text/html; charset=utf-8;' ); //什么叫做多态,字面意思,多种形态 //一个动作由不同的人去执行,而产生不同的效果或者效果,即为多态。 //一个人通过不同的状态去执行同一种动作,形成不同的效果,也可以称作为多态。 //园丁 剪 修理花草 //理发师 剪 理发 //总裁 剪 裁员 //人 笔记本 运行 win7开机了 //人 台式机 运行 xp开机了 //创建一个接口,来规范运行的方法 interface Computer { public function version(); //这个方法表示采用什么电脑 public function work(); //这台电脑是怎么运行的 } //创建一个笔记本的类实现接口 class NoteComputer implements Computer { public function version() { echo '笔记本'; } public function work() { echo '可以便携式运行 win7'; } } //创建一个台式机的类实现接口 class DesktopComputer implements Computer { public function version() { echo '台式机'; } public function work() { echo '在工作站运行 XP'; } } //创建一个用户 class Person { //创建一个方法来接受电脑(笔记本电脑,也可以是台式电脑) //怎么接受,将他们的对象传进来就 OK 啦。 public function _run($type) { echo '这个人的'; $type -> version(); $type ->work(); } } //多态的原理,就是类都写好了,不要去修改它,只要在类外的调用参数的更改 //而最后的结果也会得到更改,那么这个就是多态。 //有一个接口,两个类,一个是笔记本的类,一个是台式机的类 //创建了笔记本 $noteComputer = new NoteComputer(); //创建台式机 $desktopComputer = new DesktopComputer(); //创建一个人 $person = new Person(); //使用电脑 $person -> _run($noteComputer); //这种传递,叫做对象引用的传递 ?>
希望本文所述对大家PHP程序设计有所帮助。
更多PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)相关文章请关注PHP中文网!

Apa yang masih popular adalah kemudahan penggunaan, fleksibiliti dan ekosistem yang kuat. 1) Kemudahan penggunaan dan sintaks mudah menjadikannya pilihan pertama untuk pemula. 2) Bersepadu dengan pembangunan web, interaksi yang sangat baik dengan permintaan HTTP dan pangkalan data. 3) Ekosistem yang besar menyediakan banyak alat dan perpustakaan. 4) Komuniti aktif dan Sumber Sumber Terbuka menyesuaikan mereka dengan keperluan baru dan trend teknologi.

PHP dan Python adalah kedua-dua bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dalam pembangunan web, pemprosesan data dan tugas automasi. 1.Php sering digunakan untuk membina laman web dinamik dan sistem pengurusan kandungan, sementara Python sering digunakan untuk membina kerangka web dan sains data. 2.Php Menggunakan Echo ke Kandungan Output, Python Menggunakan Cetakan. 3. Kedua-dua sokongan pengaturcaraan berorientasikan objek, tetapi sintaks dan kata kunci adalah berbeza. 4. PHP menyokong penukaran jenis lemah, manakala Python lebih ketat. 5. Pengoptimuman Prestasi PHP termasuk menggunakan OPCACHE dan pengaturcaraan asynchronous, manakala Python menggunakan pengaturcaraan CProfile dan tak segerak.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP tetap penting dalam proses pemodenan kerana ia menyokong sejumlah besar laman web dan aplikasi dan menyesuaikan diri dengan keperluan pembangunan melalui rangka kerja. 1.Php7 meningkatkan prestasi dan memperkenalkan ciri -ciri baru. 2. Rangka kerja moden seperti Laravel, Symfony dan CodeIgniter memudahkan pembangunan dan meningkatkan kualiti kod. 3. Pengoptimuman prestasi dan amalan terbaik terus meningkatkan kecekapan aplikasi.

Phphassignificantelympactedwebdevelopmentandextendsbeyondit.1) itpowersmajorplatformslikeworderpressandexcelsindatabaseIntions.2) php'SadaptabilityAldoStoScaleforlargeapplicationFrameworksLikelara.3)

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.


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

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa