静态  static关键字

普通成员
普通成员是属于对象的

静态成员
静态成员是属于类的

普通方法里面可以调用静态成员
静态方法里面不能调用普通成员
self关键字 在类里面代表该类

普通类
class Ren {
public $name="张三";
public static $zhongzu; //静态成员 普通方法
function Say()
{
echo self::$zhongzu."你好";
}
静态类
static function Run()
{
echo $this->name;
}
}
Ren::$zhongzu = "民族";
Ren::Run(); $r = new Ren();
$r->Say();
class myclass
{
static $count;//声明一个静态变量,用来统计对象创建的次数
function __construct()//声明一个静态方法,在类外面直接使用类名就可以调用
{
self::$count++;//在方法中使用self访问静态成员并返回
}
static function getcount()//声明一个静态方法,在类外面直接使用类名就可以调用
{
return self::$count; //在方法中使用self 访问静态成员并返回
}
}
myclass::$count=0;//在类外面使用类名访问类中的静态成员,为其初始化赋值
$myc1=new myclass();//创建第一个
$myc2=new myclass();//创建第二个
$myc3=new myclass();//创建第三个 echo myclass::getcount()."<br>";//输出3
echo $myc3->getcount();//输出3

抽象类 abstract关键字

不能被实例化
做为父类使用

abstract class YunSuan//定义一个抽象类
{
public $a;
public $b; function Suan()
{
}
} class Jia extends YunSuan//定义一个jia类继承与上边的抽象类
{
function Suan()
{
return $this->a+$this->b;
}
} class Jian extends YunSuan//定义一个jian类继承与上边的抽象类
{ 

function Suan() 
{ return $this->a-$this->b;
}
} class Cheng extends YunSuan//定义一个jian类继承与上边的抽象类
{
function Suan()
{ return $this->a*$this->b;
}
} $jia = new jia();
$jia->a=10;
$jia->b=5;
echo $jia->Suan();
$jian = new jian();
$jian->a=10;
$jian->b=5;
echo $jia->Suan();
$cheng = new cheng ();
 $cheng->a=10; 
$cheng->b=5;
echo $cheng->Suan();

接口  关键词interface     implements
极度抽象的类
接口里面的方法主要是用来控制子类必须实现该类里面所有方法

interface IUSB
{
function Read(); //接口里面只声明函数名
function Write();
} class ShuBiao implements IUSB
{
function Read()
{
echo "鼠标插上了";
}
function Write()
{
echo "给鼠标传了数据";
}
} $s = new ShuBiao();
$s->Read();

加载类

include("./Ren.class.php");//"./"
include "./Ren.class.php"; require("./Ren.class.php");
require "./Ren.class.php"; require_once("./Ren.class.php");
require_once "./Ren.class.php";

自动加载类
1.所有的类文件要放在同一个文件夹下
2.所有类文件的命名规则要一致
3.所有类文件的名字要和类名保持一致

function __autoload($classname)
{
require "./libs/".$classname.".class.php";
} $r = new Ren();
var_dump($r); $d = new cat();

克隆对象 关键字clone

class Ren
{
public $name; function Run()
{
echo "跑";
} function __tostring()
{
return "name变量代表的是人员名称,Run方法是一个跑的方法";
} //克隆对象的时候自动调用的方法
function __clone()
{
$this->name = "李四";//克隆之后给name赋新值
}
} $r = new Ren();
$r->name = "张三"; $r1 = clone $r;//克隆的语法
var_dump($r1);
var_dump($r);*/

魔术方法

构造函数,对类里面成员进行初始化

function __construct()
{
}

析构函数,在对象释放的时候自动执行

function __destruct()
{
}

__set方法

function __set($name,$value)
{
}

__get方法

function __get($name)
{
}

__tostring()方法

function __tostring()
{
}

__clone方法

function __clone()
{
}

__autoload方法

function __autoload($classname)
{
}

__tostring()能够直接输出对象

class Ren
{
public $name; function Run()
{
echo "跑";
} function __tostring()//不加这个方法,是不能直接输出所造对象的,在类中添加此方法,可以直接输出对象
{
return "name变量代表的是人员名称,Run方法是一个跑的方法";
}
} $r = new Ren();
echo $r;

关键字

1.class 定义类

2.访问修饰符 public protected private
3.new 造对象的关键字
4.$this 代表该对象本身
5.extends 代表继承
6.parent 代表父类
7.static 代表静态
8.self 代表该类
9.abstract 代表抽象,定义抽象类
10.interface 代表接口,用来定义接口
11.implements 实现接口
12.clone 代表克隆
13.override 重写
14.overload 重载
15.oop 代表面向对象
16.final 写在定义类前面的,将该类定义为最终类,则该类不能被继承

php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。的更多相关文章

  1. 浅谈PHP面向对象编程(六、自动加载及魔术方法)

    6.0 自动加载及魔术方法  6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项 ...

  2. java加载类的方法1.classloader 2.class.forName()

    java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.

  3. 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则

    加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...

  4. php面向对象加载类、常用设计模式

    加载类: include("./Ren.class.php"); include "./Ren.class.php"; 用此方法的时候include后面要加空格 ...

  5. 十、Java基础---------面向对象之抽象类与接口

    抽象类(abstract)     当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的方 ...

  6. 【PHP面向对象(OOP)编程入门教程】23.自动加载类 __autoload()函数

    很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表. 在软件开发的系统中,不可能把所有的类都写在 ...

  7. 0607pm克隆&引用类&加载类&面向对象串讲&函数重载

    克隆class Ren{ public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this->s ...

  8. java动态加载类和静态加载类笔记

    JAVA中的静态加载类是编译时刻加载类  动态加载类指的是运行时刻加载类 二者有什么区别呢 举一个例子  现在我创建了一个类  实现的功能假设为通过传入的参数调用具体的类和方法 class offic ...

  9. mybatis 详解(六)------通过mapper接口加载映射文件

    通过 mapper 接口加载映射文件,这对于后面 ssm三大框架 的整合是非常重要的.那么什么是通过 mapper 接口加载映射文件呢? 我们首先看以前的做法,在全局配置文件 mybatis-conf ...

随机推荐

  1. Mongoose全面理解

    一.创建schemas 创建schemas的方式: 1 var userSchema = new mongoose.Schema({ 2 name: String, 3 email: String, ...

  2. 凭借K2 SmartObject框架,在SharePoint中集成数据

    随着SharePoint 2013的发布,Microsoft已提供Business Connectivity Services(BCS)增强功能以及外部列表功能,确保您可以更简单地在SharePoin ...

  3. 在Tomcat下配置Solr 4.x 版本

    solr是一款非常优秀的全文检索服务器,最新版本在配置和前台页面上都做了较大的改动, 所以对用惯了老版本的朋友们来说,再重新配置新版本的solr,无疑又是一件痛苦的事情. 配置环境:windows   ...

  4. java基础之 垃圾回收机制

    1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾.JVM的 ...

  5. java中this的用法?

    2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...

  6. JAVA之关于This的用法

    JAVA之关于This的用法   业精于勤,荒于嬉:行成于思,毁于随.——韩愈 用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法,那们类里面是够也应该 ...

  7. [Java]Java简介

    Java版本历史 1995年5月23日,Java语言诞生 1996年1月,第一个JDK1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术 1996年9月,约8.3 ...

  8. SQL中 char、varchar、text 和 nchar、nvarchar、ntext的区别

    1.char.char存储定长数据很方便,char字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间.             2.va ...

  9. 求一个数组中最小的K个数

    方法1:先对数组进行排序,然后遍历前K个数,此时时间复杂度为O(nlgn); 方法2:维护一个容量为K的最大堆(<算法导论>第6章),然后从第K+1个元素开始遍历,和堆中的最大元素比较,如 ...

  10. PHP输出缓冲控制

    说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会 向磁盘写入的,而是写到buffer中,当buffer写 ...