PHP 面向对象学习笔记总结
2010-04-14 22:37
976 查看
终于花了一天的时间学习了PHP面向对象思想。特总结如下:
单双引号的区别:” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
‘ ‘ 单引号里面的不进行解释,直接输出。
1。多态例子:
电脑上有USB接口。但是usb接口可能有多种用途比如mp3或者优盘的功能。
interface Usb{
function drive();
function alert();
}
class Zip implements Usb{
function drive(){
echo "usb2.0";
}
function alert(){
echo "这是一个优盘";
}
}
class Mp3 implements Usb{
function drive(){
echo "usb1.0";
}
function alert(){
echo "这是一个MP3";
}
}
class Pc {
function checkUsb($what){
$what->drive();
$what->alert();
}
}
$myPc = new Pc();
$myMp3 = new Mp3();
$myZip = New Zip;
$myPc->checkUsb($myMp3);//此处输入mp3的类的对象传入
$myPc->checkUsb($myZip);
final 用于class 或者function, class用final则不能继承,function用final后不能重载
static 用于function后。函数内不能使用非静态的字段。
self可以用于访问静态字段和常量 例如self::$name
const申明时不需要$符合 例如 const NAME
怎么样去覆盖父类函数:
class Root{
protected $name ="父亲";
function getRootName(){
return $this->name."在耍游戏";
}
}
class Child extends Root{
protected $name = "孩子";
function getRootName(){ //子类覆盖了父类的函数
return Root::getRootName()."在耍游戏";//调用父类的函数
}
}
$myroot = new Child();
echo $myroot->getRootName();
申明抽象类。抽象类没有方法体,需被继承后实现里面的所有方法才可以调用,抽象类里面可以申明变量。
abstract class classA{
abstract function funA();
abstract function funB();
}
class classB extends classA{
function funA(){
return "我实例化了抽象函数";
}
}
$myclassb = new classB();
echo $myclassb->funA();
申明接口类。其实接口类是一个特殊的抽象类。接口也没有方法体。必须有类实现此接口所有方法后可使用。但是申明的变量必须为常量const。 同时接口类可以继承抽象类。例如
interface demo{
const NAME="接口必须为常量";
function funA();
function funB();
}
//抽象类
abstract class ClassD implements demo{
public $name1="抽象类的属性";
//接口实现的funA()和funB()
function funA(){
echo "实现接口的抽象方法!";
}
function funB(){
}
//抽象类的方法
abstract function funC($name1);
}
//实现抽象类的方法
class ClassE extends ClassD{
function funC($nameE){
echo "实现了抽象类的方法";
}
}
$classE = new ClassE();
$classE->funA(); //输出实现接口的抽象方法!
$classE->funC(); //输出实现了抽象类的方法
2。三元运算符 e1?e2:e3 (如果e1为真那么输出e2,为假输出e3)
例如 echo (2>3)?"真":"假";
3. 怎样输出数组的值
$myArray = array(
"sun"=>"123",
"moon"=>"456"
);
foreach($myArray as $key1=>$value){
echo $key1."=>".$value."<br>";
}
4。 使用instanceof 判断类对象
$classE = new ClassE();
if ($classE instanceof ClassE) echo "这是真的"
5. 使用__set($name, $value)方法设置类的私有变量访问
使用__get()方法设置类私有累变量的设置
class ClassA {
private $name;
function __construct($n){
echo "构造函数";
$this->name = $n; //注意如果此行改为$this->$name = $n 则$name 不能成功赋值。自己也没搞懂有什么不同???
}
function __set($n,$v){
$this->$n = $v;
}
function __get($name){
return $this->name;
}
function destruct(){
}
}
$classA = new ClassA('etetet');
echo $classA->$name;
$classA->name = "wydfdg";
echo $classA->$name;
单双引号的区别:” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
‘ ‘ 单引号里面的不进行解释,直接输出。
1。多态例子:
电脑上有USB接口。但是usb接口可能有多种用途比如mp3或者优盘的功能。
interface Usb{
function drive();
function alert();
}
class Zip implements Usb{
function drive(){
echo "usb2.0";
}
function alert(){
echo "这是一个优盘";
}
}
class Mp3 implements Usb{
function drive(){
echo "usb1.0";
}
function alert(){
echo "这是一个MP3";
}
}
class Pc {
function checkUsb($what){
$what->drive();
$what->alert();
}
}
$myPc = new Pc();
$myMp3 = new Mp3();
$myZip = New Zip;
$myPc->checkUsb($myMp3);//此处输入mp3的类的对象传入
$myPc->checkUsb($myZip);
final 用于class 或者function, class用final则不能继承,function用final后不能重载
static 用于function后。函数内不能使用非静态的字段。
self可以用于访问静态字段和常量 例如self::$name
const申明时不需要$符合 例如 const NAME
怎么样去覆盖父类函数:
class Root{
protected $name ="父亲";
function getRootName(){
return $this->name."在耍游戏";
}
}
class Child extends Root{
protected $name = "孩子";
function getRootName(){ //子类覆盖了父类的函数
return Root::getRootName()."在耍游戏";//调用父类的函数
}
}
$myroot = new Child();
echo $myroot->getRootName();
申明抽象类。抽象类没有方法体,需被继承后实现里面的所有方法才可以调用,抽象类里面可以申明变量。
abstract class classA{
abstract function funA();
abstract function funB();
}
class classB extends classA{
function funA(){
return "我实例化了抽象函数";
}
}
$myclassb = new classB();
echo $myclassb->funA();
申明接口类。其实接口类是一个特殊的抽象类。接口也没有方法体。必须有类实现此接口所有方法后可使用。但是申明的变量必须为常量const。 同时接口类可以继承抽象类。例如
interface demo{
const NAME="接口必须为常量";
function funA();
function funB();
}
//抽象类
abstract class ClassD implements demo{
public $name1="抽象类的属性";
//接口实现的funA()和funB()
function funA(){
echo "实现接口的抽象方法!";
}
function funB(){
}
//抽象类的方法
abstract function funC($name1);
}
//实现抽象类的方法
class ClassE extends ClassD{
function funC($nameE){
echo "实现了抽象类的方法";
}
}
$classE = new ClassE();
$classE->funA(); //输出实现接口的抽象方法!
$classE->funC(); //输出实现了抽象类的方法
2。三元运算符 e1?e2:e3 (如果e1为真那么输出e2,为假输出e3)
例如 echo (2>3)?"真":"假";
3. 怎样输出数组的值
$myArray = array(
"sun"=>"123",
"moon"=>"456"
);
foreach($myArray as $key1=>$value){
echo $key1."=>".$value."<br>";
}
4。 使用instanceof 判断类对象
$classE = new ClassE();
if ($classE instanceof ClassE) echo "这是真的"
5. 使用__set($name, $value)方法设置类的私有变量访问
使用__get()方法设置类私有累变量的设置
class ClassA {
private $name;
function __construct($n){
echo "构造函数";
$this->name = $n; //注意如果此行改为$this->$name = $n 则$name 不能成功赋值。自己也没搞懂有什么不同???
}
function __set($n,$v){
$this->$n = $v;
}
function __get($name){
return $this->name;
}
function destruct(){
}
}
$classA = new ClassA('etetet');
echo $classA->$name;
$classA->name = "wydfdg";
echo $classA->$name;
相关文章推荐
- php学习笔记------[PHP面向对象的程序设计]
- PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
- PHP学习笔记十七【面向对象定义类】
- php学习笔记------[PHP面向对象的程序设计]
- PHP面向对象学习的笔记
- 我的php学习笔记(十四)php的面向对象开发(一)
- php类面向对象学习笔记
- 我的php学习笔记(二十一)php的面向对象开发(八)
- 我的php学习笔记(二十二)php的面向对象开发(九)
- php面向对象学习笔记01-面向对象介绍、构造函数、析构函数
- php学习笔记---面向对象中[接口]与[多态性]的应用
- php学习笔记------[PHP面向对象的程序设计]
- 我的php学习笔记(二十)php的面向对象开发(七)
- PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
- 我的php学习笔记(十七)php的面向对象开发(四)
- PHP面向对象的程序设计学习总结
- PHP:面向对象学习笔记,重点模拟Mixin(掺入)
- php学习笔记(三)面向对象高级实践
- PHP面向对象学习笔记之一:基础概念