PHP面向对象基础知识
2018-02-24 10:32
716 查看
1、什么是OOP
英文是Object Oriented Programming,面向对象的程序设计。
所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,
具有相关的成员变量和成员函数(也称为:方法)。
2.OOP编程基本特征是什么?分别是什么意义?
1) 封装:信息封装,留有一个调用接口,不调用功能不显示,不影响其他代码,调用显示其功能
2) 继承:子类可继承父类的方法和属性 通过 extends关键字定义
3) 多态:同样的操作指令,来到不同的对象或者代码里运行,因为参数的不一样,而达到不一样的效果
4)抽象:3.什么是类?
类是对象的抽象概念
通过类名 它能够代表这个对象
控制这个对象的属性和值
class person{ }//这个是类
$obj = new person();//类的实例化就是对象
4.类是怎么声明的?
class Index
{
public function 方法名(){
}
}
这就算声明了一个类 类里包含方法
通过$obj=new index() 来实例化这个类 编程对象
通过$obj->方法名()来调用类里面的方法
5.访问控制修饰符有哪些?
public(公共的、默认)
protected(受保护的)
private(私有的)
6.什么是构造方法?
有了这个方法
他会自动触发
只要这个类里面有程序运行
他就自己触发 运行
在调用方法前面执行
__construct()
7.什么是析构方法?
析构函数的作用和构造函数的作用正好相反,是对象被销毁时被调用,作用是释放内存
析构函数 用完直接销毁
在调用方法后面执行
__destruct()
8.PHP中的魔术方法有哪些?都有什么意义?
__construct(),类的构造函数
__destruct(),类的析构函数
__call(
b100
),在对象中调用一个不可访问方法时调用
__callStatic(),用静态方式中调用一个不可访问方法时调用
__get(),获得一个类的成员变量时调用
__set(),设置一个类的成员变量时调用
__isset(),当对不可访问属性调用isset()或empty()时调用
__unset(),当对不可访问属性调用unset()时被调用。
__sleep(),执行serialize()时,先会调用这个函数
__wakeup(),执行unserialize()时,先会调用这个函数
__toString(),类被当成字符串时的回应方法
__invoke(),调用函数的方式调用一个对象时的回应方法
__set_state(),调用var_export()导出类时,此静态方法会被调用。
__clone(),当对象复制完成时调用
__autoload(),尝试加载未定义的类
__debugInfo(),打印所需调试信息
8.PHP怎么继承?
class Stu{
方法
}
继承
class Pupil extends Stu{
}
9.final关键字有什么作用?
如果某个类在定义时,前面有修饰词final,则该类不能被继承
final 放在属性前面
属性声明时,如果前面有修饰词final关键字,则该属性值不能被更改,即此时该属性为常量
final放在方法前面
如果某个方法在定义时,前面有修饰词final,该方法可以被调用,不能重写
10.static关键字有什么作用?
(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
11.const 关键字有什么作用?
1.在定义时必须被初始值,
2.前面不加任何修饰符
3.变量名字母一般都大写
4.常量可以被子类继承
5.一个常量是属于一个类的,而不是某个对象的
作用:当某些值是固定不变的,就用const
12.instanceof关键字有什么作用?
1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口。
<?php
$obj = new A();
if ($obj instanceof A) {
echo 'A';
}
13.clone关键字有什么作用?
克隆一个对象 不用new();
而且克隆出来就相当于另一个 可以更改、
calss ppp{
function(参数1,参数2){
$this->name=参数1;
$this->age=参数2;
}
}
克隆
calss ppp{
function(参数1,参数2){
$this->name=参数1;
$this->age=参数2;
}
}
calss ppp{
function(参数1,参数2){
$this->name=参数1;
$this->age=参数2;
}
function __clone(){
$this->name=参数1;
$this->age=参数2;
}
}
14.什么是对象串行化?
1.将对象转成字符串(不用看懂这个字符串)--- 串行化
2.将字符串转回对象的过程 --- 反串行化
//对类对象来串行化
$p = new Person();
//将对象串行化
$str = serialize($p);
15.什么是工厂模式和单例模式?
单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。
所有的单例模式至少拥有以下三种公共元素:
1. 它们必须拥有一个构造函数,并且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
英文是Object Oriented Programming,面向对象的程序设计。
所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,
具有相关的成员变量和成员函数(也称为:方法)。
2.OOP编程基本特征是什么?分别是什么意义?
1) 封装:信息封装,留有一个调用接口,不调用功能不显示,不影响其他代码,调用显示其功能
2) 继承:子类可继承父类的方法和属性 通过 extends关键字定义
3) 多态:同样的操作指令,来到不同的对象或者代码里运行,因为参数的不一样,而达到不一样的效果
4)抽象:3.什么是类?
类是对象的抽象概念
通过类名 它能够代表这个对象
控制这个对象的属性和值
class person{ }//这个是类
$obj = new person();//类的实例化就是对象
4.类是怎么声明的?
class Index
{
public function 方法名(){
}
}
这就算声明了一个类 类里包含方法
通过$obj=new index() 来实例化这个类 编程对象
通过$obj->方法名()来调用类里面的方法
5.访问控制修饰符有哪些?
public(公共的、默认)
protected(受保护的)
private(私有的)
6.什么是构造方法?
有了这个方法
他会自动触发
只要这个类里面有程序运行
他就自己触发 运行
在调用方法前面执行
__construct()
7.什么是析构方法?
析构函数的作用和构造函数的作用正好相反,是对象被销毁时被调用,作用是释放内存
析构函数 用完直接销毁
在调用方法后面执行
__destruct()
8.PHP中的魔术方法有哪些?都有什么意义?
__construct(),类的构造函数
__destruct(),类的析构函数
__call(
b100
),在对象中调用一个不可访问方法时调用
__callStatic(),用静态方式中调用一个不可访问方法时调用
__get(),获得一个类的成员变量时调用
__set(),设置一个类的成员变量时调用
__isset(),当对不可访问属性调用isset()或empty()时调用
__unset(),当对不可访问属性调用unset()时被调用。
__sleep(),执行serialize()时,先会调用这个函数
__wakeup(),执行unserialize()时,先会调用这个函数
__toString(),类被当成字符串时的回应方法
__invoke(),调用函数的方式调用一个对象时的回应方法
__set_state(),调用var_export()导出类时,此静态方法会被调用。
__clone(),当对象复制完成时调用
__autoload(),尝试加载未定义的类
__debugInfo(),打印所需调试信息
8.PHP怎么继承?
class Stu{
方法
}
继承
class Pupil extends Stu{
}
9.final关键字有什么作用?
如果某个类在定义时,前面有修饰词final,则该类不能被继承
final 放在属性前面
属性声明时,如果前面有修饰词final关键字,则该属性值不能被更改,即此时该属性为常量
final放在方法前面
如果某个方法在定义时,前面有修饰词final,该方法可以被调用,不能重写
10.static关键字有什么作用?
(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
11.const 关键字有什么作用?
1.在定义时必须被初始值,
2.前面不加任何修饰符
3.变量名字母一般都大写
4.常量可以被子类继承
5.一个常量是属于一个类的,而不是某个对象的
作用:当某些值是固定不变的,就用const
12.instanceof关键字有什么作用?
1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口。
<?php
$obj = new A();
if ($obj instanceof A) {
echo 'A';
}
13.clone关键字有什么作用?
克隆一个对象 不用new();
而且克隆出来就相当于另一个 可以更改、
calss ppp{
function(参数1,参数2){
$this->name=参数1;
$this->age=参数2;
}
}
克隆
calss ppp{
function(参数1,参数2){
$this->name=参数1;
$this->age=参数2;
}
}
calss ppp{
function(参数1,参数2){
$this->name=参数1;
$this->age=参数2;
}
function __clone(){
$this->name=参数1;
$this->age=参数2;
}
}
14.什么是对象串行化?
1.将对象转成字符串(不用看懂这个字符串)--- 串行化
2.将字符串转回对象的过程 --- 反串行化
//对类对象来串行化
$p = new Person();
//将对象串行化
$str = serialize($p);
15.什么是工厂模式和单例模式?
单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。
所有的单例模式至少拥有以下三种公共元素:
1. 它们必须拥有一个构造函数,并且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
相关文章推荐
- [麦先生]PHP面向对象基础知识小结
- php设计模式之面向对象基础知识
- PHP面向对象基础知识总结(2012-07-11)
- php面向对象全攻略 (一) 面向对象基础知识
- PHP基础知识系列:面向对象基础
- php面向对象全攻略 (一) 面向对象基础知识
- php之面向对象基础(V客学院知识分享)
- PHP面向对象基础知识总结
- PHP面向对象学习笔记之一 基础概念
- 黑马程序员--面向对象第二部分-内部类、异常--java学习日记6(基础知识)
- 黑马程序员 C#面向对象基础知识点
- java基础知识系列---面向对象思想的理解
- C# 基础知识系列之面向对象基础
- javascript面向对象基础知识记录1
- c#面向对象基础知识
- Java基础知识强化20:面向对象和面向过程的思想对比
- PHP基础知识系列:对象串行化serialize与unserialize
- 黑马程序员学习log第九篇基础知识:JAVA的面向对象之正则表达式及反射总结
- 《软件工程 ——理论、方法与实践》知识概括第六章 面向对象基础
- PHP面向对象基础实例