php学习笔记之面向对象
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-25 10:30:34 浏览: 评论:0
面向对象是一种计算机编程架构,比面向过程编辑具有更强的灵活性和扩展性。这里想提醒一下初学者:要想在编程这条路上走得比别人远,就一定要掌握面向对象编程技术。
public 公有的:本类,子类,外部对象都可以调用
protected 受保护的:本类 子类,可以执行,外部对象不可以调用
private 私有的:只能本类执行,子类与外部对象都不可调用
面向对象编程的三大特点
1)封闭性
封闭性,也可以称为信息隐藏。就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系。对于用到该类的开发人员,只要知道这个类如何使用即可,而不用去关心这个类是如何实现的。这样做可以让开发人员更好地把精力集中起来专注别的事情,同时也避免了程序之间的相互依赖而带来的不便。
2)继承性
继承性就是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并可以重写或添加新的属性和方法。继承这个特性简化了对象和类的创建,增加了代码的可重性。继承分单继承和多继承,PHP所支持的是单继承,也就是说,一个子类有且只有一个父类。
3)多态性
多态性是指同一个类的不同对象,使用同一个方法可以获得不同的结果,这种技术称为多态性。多态性增强了软件的灵活性和重用性。
类的定义
一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)。
- <?php
- Class myobject{
- //……
- }
- ?>
定义:物以类聚,把具有相似特性的对象归到一个类中,类定义了这些相似对象拥有的相同属性和方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。
类的对象称为类的一个实例。要创建一个类的实例,必须使用 new 关键字。
001ZpQGYty6MeYnSNUh25&690
代码如下:
- <?php
- //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
- class NbaPlayer{
- public $name = "Jordan"; //定义属性
- public $height = "198cm";
- public $team = "Bull";
- public $playerNumber = "23";
- //定义方法
- public function run(){
- echo "Running\n";
- }
- public function dribblr(){
- echo "Dribbling\n";
- }
- public function pass(){
- echo "Passing\n";
- }
- }//www.phpfensi.com
- //类到对象的实例化
- //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
- $jordan = new NbaPlayer();
- //对象中的属性成员可以通过"->"符号来访问
- echo $jordan->name."\n";
- //对象中的成员方法可以通过"->"符号来访问
- $jordan->dribble();
- $jordan->run();
- ?>
成员方法
类中的函数被称为成员方法。函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。
下面就来扩充上面的myobject类,为它添加一个成员方法,代码如下:
- <?php
- classmyobject{
- function getobjectname($name){
- echo "商品名称为:".$name;
- }
- }
- ?>
该方法的作用是输出商品名称,商品名称是通过方法的参数传进来的。
类是一个抽象的描述,是功能相似的一组对象的集合。如果想用到类中的方法和变量,首先就要把它具体落实到一个实体,也就是对象上。
类常量
既然有变量,当然也会有常量了。常量就是不会改变的量,是一个恒值。众所周知的一个常量就是圆周率Pi。定义常量使用关键字const如:
ConstPI=3.14159;
构造函数
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作,代码如下:
- <?php
- //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
- class NbaPlayer{
- public $name = "Jordan"; //定义属性
- public $height = "198cm";
- public $team = "Bull";
- public $playerNumber = "23";
- //构造函数,在对象被实例化的时候自动调用
- function __construct($name,$height,$weight,$team){
- echo "It is an NbaPlayer constructor\n";
- $this->name = $name;
- //$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
- $this->height = $height;
- $this->weight = $weight;
- $this->team = $team;
- }
- //定义方法
- public function run(){
- echo "Running\n";
- }
- public function dribblr(){
- echo "Dribbling\n";
- }
- public function pass(){
- echo "Passing\n";
- }
- }
- //类到对象的实例化
- //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
- $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");
- //对象中的属性成员可以通过"->"符号来访问
- echo $jordan->name."\n";
- //对象中的成员方法可以通过"->"符号来访问
- $jordan->dribble();
- $jordan->run();
- //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
- $james = new NbaPlayer("James","203cm","120kg","Heat")
- echo $james->name."\n";
- ?>
析构函数,代码如下:
- <?php
- //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
- class NbaPlayer{
- public $name = "Jordan"; //定义属性
- public $height = "198cm";
- public $team = "Bull";
- public $playerNumber = "23";
- //构造函数,在对象被实例化的时候自动调用
- function __construct($name,$height,$weight,$team){
- echo "It is an NbaPlayer constructor\n";
- $this->name = $name;
- //$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
- $this->height = $height;
- $this->weight = $weight;
- $this->team = $team;
- }
- //析构函数,在程序执行结束的时候会自动调用
- //析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源
- function __destruct(){
- echo "Destroying".$this->name."\n";
- }
- //定义方法
- public function run(){
- echo "Running\n";
- }
- public function dribblr(){
- echo "Dribbling\n";
- }
- public function pass(){
- echo "Passing\n";
- }
- }
- //类到对象的实例化
- //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
- $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");
- //对象中的属性成员可以通过"->"符号来访问
- echo $jordan->name."\n";
- //对象中的成员方法可以通过"->"符号来访问
- $jordan->dribble();
- $jordan->run();
- //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
- $james = new NbaPlayer("James","203cm","120kg","Heat")
- echo $james->name."\n";
- //通过把变量设为null,可以触发析构函数的调用
- //当对象不再使用的时候会触发析构函数
- $james = null;
- echo "from now on James will not be used.\n"
- ?>
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
对象的引用,代码如下:
- <?php
- //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
- class NbaPlayer{
- public $name = "Jordan"; //定义属性
- public $height = "198cm";
- public $team = "Bull";
- public $playerNumber = "23";
- //构造函数,在对象被实例化的时候自动调用
- function __construct($name,$height,$weight,$team){
- echo "It is an NbaPlayer constructor\n";
- $this->name = $name;
- //$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
- $this->height = $height;
- $this->weight = $weight;
- $this->team = $team;
- }
- //析构函数,在程序执行结束的时候会自动调用
- //析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源
- function __destruct(){
- echo "Destroying".$this->name."\n";
- }
- //定义方法
- public function run(){
- echo "Running\n";
- }
- public function dribblr(){
- echo "Dribbling\n";
- }
- public function pass(){
- echo "Passing\n";
- }
- }
- //类到对象的实例化
- //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
- $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");
- //对象中的属性成员可以通过"->"符号来访问
- echo $jordan->name."\n";
- //对象中的成员方法可以通过"->"符号来访问
- $jordan->dribble();
- $jordan->run();
- //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
- $james = new NbaPlayer("James","203cm","120kg","Heat")
- echo $james->name."\n";
- //对象的引用用于访问对象的属性和方法,$james,$james1和$james2都是对象的引用
- //$james和$james1是对象的两个独立引用
- //$james2是$james的影子,使用对象的同一个引用,任何一个赋值为null相当于删除了同一个引用
- $james1 = $james;
- $james2 = &$james
- $james = null;
- echo "from now on James will not be used.\n"
- ?>
Tags: php面向对象
- 上一篇:PHP面向对象精要总结
- 下一篇:分享下php5类中三种数据类型的区别
相关文章
- ·PHP 面向对象 继承(2013-11-14)
- ·PHP面向对象开发——封装关键字(2013-11-14)
- ·php面向对象__toString() 用法详解(2014-02-20)
- ·php面向对象__call处理错误调用技巧(2014-02-20)
- ·php面向对象中子类中重载父类详解(2014-02-20)
- ·php面向对象的封装性说明(2014-05-21)
- ·PHP面向对象编程入门教程(2014-08-02)
- ·PHP5 中的常量 PHP 面向对象(2014-09-09)
- ·PHP 面向对象 final类与final方法(2014-09-09)
- ·php面向对象:观察者模式示例(2015-04-13)
- ·php面向对象之工厂模式示例(2015-04-13)
- ·PHP面向对象(OOP)编程:this的特殊用法(2015-12-12)
- ·php面试之面向对象的相关知识介绍(2019-12-16)
- ·聊聊php面向对象的编程基础(一)(2020-03-31)
- ·聊聊php面向对象的编程基础(二)(2020-03-31)
- ·php面向对象和面向过程有什么区别(2020-04-16)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)