您的位置:首页 > 编程语言 > PHP开发

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. 它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php