PHP 面向对象详解(2)


class A {
function info(){
echo "A INFO";
}
}
class B extends A {
function info(){
echo "B INFO";
}
}
class C extends A {
function info(){
echo "C INFO";
}
}
function printinfo($obj){
function printinfo(A $obj){
if($obj instanceof A)
$obj->info();
$obj->info();
}
}
$a=new A(); $b=new B(); $c=new C();
printinfo($a); //输出A INFO
printinfo($b); //输出B INFO
printinfo($c); //输出C INFO



抽象方法和抽象类

抽象方法是作为子类摸版使用的。

复制代码 代码如下:


abstract class Person{
public $name;
abstract function getInfo();
}


抽象类不能被实力话,一个抽象类中,必须有一个抽象方法。但是抽象类中可以定义动态函数。
接口
当一个类继承了一个接口之后,它要覆盖接口的所有方法,接口只能声明常量,接口的方法必须定义为共有否则无法继承,接口可以与多个接口间继承
语法:

复制代码 代码如下:


interface PCI{
const TYPE="PCI";
//public $name; error
function start();
function stop();
}


接口中的方法可以声明为static

复制代码 代码如下:


interface A{ function a();}
interface B{ function b();}
interface C extends A{ function c();}
class D implements B,C{
function a(){}
function b(){}
function c(){}
}



类的声明:

复制代码 代码如下:


<?php
    权限修饰符 class 类名{ //权限修士符号:public,protected,private 或者省略3者.
      //类体;        //class 是建类关键字
    }             //类名必须跟在class 后面,且跟上{}.{}之间放类的成员.
  ?>
//ps:在class关键字前可以加权限修饰符外,还可以加static,abstract等关键字.一个类,即一对大括号之间的全部内容都要在一段代码段中,不允许将类中的内容分割成对块.
<?php
  class ConnDB{
    //....
?>
<?
    //...
  };
?>


成员属性:
  在类中直接声明的变量称为成员属性/变量.其类型可以为php中的标量类型和复合类型,使用资源类型和空类型是无效的.
此外,成员属性的声明时,必须要有关键字来修饰:有特定意义的关键字:public,protected,private ;不需要特定意义:var.声明成员属性时,没有必要赋初始值.

成员常量:

  以const常量修饰,例如:const PI = 3.1415926;
  常量的输出不需要实例化,直接由类名+常量名调用即可,格式为: 类名::常量名
ps. 特殊的访问方法:--------"$this" 和 "::"
1) $"this" 存在于每个成员方法当中,它是一个特殊的对象以用方法.成员方法属于那个对象,$this应用就代表那个对象,其作用就是专门完成对象内部成员之间的访问.
2) "::"成为作用域操作符,使用这个操作符可以在不创建对象的情况下调用类中的常量,变量和方法. 其语法格式如下:

  关键字::变量名/常量名/方法名

  关键字:parent,可以调用父类成员中的成员变量,成员方法和常量;
      self,可以调用当前类中的静态成员和常量;
      类名,可以调用类中的常量,变量和方法;   
  
成员方法:

  在类中声明的函数成为成员方法,在一个类中可以声明多个函数,即对象可以拥有多个成员方法.成员方法的声明和函数的声明相同,唯一特殊之处就是成员方法可以有关键字对它进行修饰,从而控制其访问权限.
类的实例化

  创建对象:

    $变量名 = new 类名称([参数]); //类的实例化.
  访问类成员:
    $变量名 -> 成员属性 = 值;
构造方法和析构方法
构造方法是对象创建完成后第一个呗对象自动调用的方法.它存在每个类的声明当中,是一个特殊的成员方法,一般用来完成一些初始化操作.如果类中没有构造方法,系统会默认自动生成一个没有参数的构造方法.
  格式:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1a664899813a4469cbe49a903b5af773.html