php 面向对象基础,PHP 面向对象基础

本文主要阐述面向对象的基本概念,如有问题,还请斧正。

首先说明,涉及的一些知识点,算是提纲吧 。

1 类的基本概念;2 对象的基本概念;3 访问控制;4 构造函数,析构函数;5魔术方法;6 接口;7 多态;8 封装;9继承;10 static与final

一,类的基本概念

1 什么是类? 类即拥有相同属性和行为的一个集合体。举个例子 ,我们日常生活中的车 是一个类,车拥有相同的属性(颜色,大小,重量)和行为(行驶);又如动物也是一个类,动物拥有相同的属性(大小)和行为(吃,喝);我们将这些拥有相同的属性和行为的一些事物叫做一个类。

2 在程序中如何申明一个类,用关键字 class  例

classPerson{//属性;

// 行为;

}

在这里我们申明了一个人类

二 ,对象的基本概念

1 什么是对象?  对象即是一个具体的事物,也或者是一个抽象的事物,对象时从类实例化而来。例: 上面我们说车是一个类,那么宝马,奔驰等就是对象,总结一句,对象就是将类具体化了。

2 对象的两个部分

(1)对象的组成元素,是对象的数据模型,用于描述对象的数据,又别称为属性;

(2)对象的行为,对象的行为模型,用于描述对象具体能做什么事情,又被称为方法;

3 对象的两个特征

(1)高内聚, 即在对象的内部属性和方法对内是可见,在对象的内部属性和方法都是可以被修改和访问的;

(2)低耦合  ,  在对象的外部,我们只能看见一部分的方法和属性;涉及到访问控制,后文在述。

4 如何实例化一个对象,用关键字 new   上面我们申明了一个人类,现在我们将这个人类  实例化。

实例化一个张三的对象

$zhangsan = new Person();

三 , 访问控制 :主要用修饰符public  protected private 来控制访问的权限; 例

classPerson{public $name; //公有的,可以被任何访问

protected $sex; //受保护的,可以被自身和子类访问

private $age; //私有的,只能被自己访问

}

四,  构造函数,和析构函数

1  构造函数 ,构造函数为类中的一个方法,当我们实例化这个类的时候 自动调用,构造函数的目的是为了完成一些初始化的工作。用__construct 例

classPerson{public $name; //公有的,可以被任何访问

protected $sex; //受保护的,可以被自身和子类访问

private $age; //私有的,只能被自己访问

//当我们new这个类时 自动调用

public function__construct(){echo "你好";

}

}

2 析构函数  ,当对象被销毁的时候自动调用,我们常用析构函数来销毁变量,以达到释放内存的 目的。 用 __desturct  写法同上。

五, 魔术方法,原理和构造函数差不多,在特定的情况下自动调用。

__tostring    当对象被作为字符串使用时,自动调用,返回字符串;

__invote       当对象被作为方法使用时,自动调用;

__call           当对象访问不存在的方法或者未公开的方法是,自动调用,返回被调用的函数名,和参数数组;

__callStatic  当对象访问不存在的静态方法,或者未公开的时候自动调用,返回调用函数名,和参数数组;

__get           对象访问不可访问的属性时候,自动调用,返回不可访问的属性名;

__set           给不可访问的属性赋值时,自动调用,返回属性名,和赋值参数;

__isset        用isset()/empty()检测不可访问的属性时,自动调用,返回检测的属性名;

__unset      用unset()删除不可访问的属性时,自动调用,返回删除属性名;

__clone      使用clone关键字克隆对象时,自动调用,作用是为新的克隆对象赋初始值;

__sleep      对象序列化时,自动调用,返回一个数组,数组中的值就是可以序列化的属性;

__wakeup  对象反序列化时,自动调用,为反序列化新产生的对象,赋初始值;

__autoload   需要在内外部声明函数。当实例一个未申明的类时,自动调用,传递实例化的类名,可以使用类名自动加载对应的类文件;

六,接口

1  什么是接口?  接口提供了一组实现接口的类    必须实现的方法组合  ,接口里面的方法没有方法体(具体的执行代码)接口里面的方法都是抽象方法。

2   如何声明一个接口   例:

interfaceInter {public function eat(); //没有具体的方法体

public functionrun();

}

3  当一个类去实现一个接口的时候 必须实现接口里面的方法,除非这个类时抽象类 例

//申明一个接口

interfaceInter {publicfuntion eat();publicfuntion run();

}//一个类去实现接口

class Person implementsInter{//这个类必须去实现接口中的方法

public functioneat(){//具体的方法

}public functionrun (){//具体的方法

}

}

4  接口可以被继承,用关键字extends   写法   interface inter1 extends Inter {  } inter1接口继承了Inter接口,接口的继承可以是一对多,即一个接口可以继承多个父接口。注意:当一个类去实现了一个子接口的时候,它也必须实现父接口里面的抽象方法。

七 ,多态

1  多态是一种现象,当一个类被多个子类所继承,如果这个类中的方法在子类中表现出了不同的功能,我们称这种现象为多态;

八 ,封装

1  封装 通过访问修饰符 将类中不需要外部访问的属性和方法进行私有化处理,实现访问控制,让使用者只能通过我们提供的方法对属性和方法进行访问。

2  封装的好处,可以重复调用避免了代码的冗余。

九 ,继承   类可以被继承,子类拥有父类的属性和方法,子类可以修改父类的成员,我们称之为重写,当子类 重写父类的方法后,按照子类的方法运行  通过关键字extends 实现继承

例子

//声明一个类

classPerson{$name;public functionsay(){echo $this->name."今天天气不错哦"//$this php中的伪变量,代表自身对象我们在类内部访问属性时一般用$this

}

}//继承一个类

class Man extendsPerson{//将父类的say方法重写

public functionsay(){echo "晚饭吃什么?"}

}

十, 关键字 final 和static

1  final   php5中引入关键字final  当用final 修饰类的时候这个类可以理解为最终类,这个类不能被继承;当用final修饰方法时,这个方法可以就理解为最终方法,不能够被重写。

2 static  静态成员   //用static 修饰的属性和方法被称为静态属性和静态方法

(1)静态属性保存了公有的数据;

(2)静态方法只能访问静态属性;

(3)静态成员不要要实例化就可以访问,

(4)静态方法不能够去调用非静态成员,然而非静态方法则可以调用静态成员,因为静态成员在加载的时候已经产生,而非静态成员此时没有实例化诞生。

(5)如何访问?  在类内部访问 用 self 或者static访问  格式 :  self/static::$属性名 ;    parent::$属性名访问父类属性  在类外部调用 :  类名::$属性。

结束语   :以上是关于面向对象编程的一些基本概念,以后闲的时候在弄些其他东西,话说这是在下的第一篇博客,

2018-09-02    21:39:26

原文:https://www.cnblogs.com/jia1001/p/9575486.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值