使用self关键字调用类体中的静态成员

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<h3>对象和属性</h3>
<?php
class car
{
public $color;
public $size;

public function set1($color,$size)
{
$this->color=$color;
$this->size=$size;
	}
	public function print1()
	{
echo "颜色:".$this->color;
echo "大小:".$this->size;
		}
	}
	$bus=new car();
	$bus->set1("blue",30);
	$bus->print1();
?>
<h3>使用构造函数</h3>
<?php
class car1
{
public $color;
public $size;

public function car1($color,$size)
{
	$this->color=$color;
	$this->size=$size;
	}

	public function printArrbute()
	{
       echo "颜色:".$this->color;
	   echo "大小:".$this->size;
		}
	}
	$bus=new car1("black",20);
	$bus->printArrbute();
?>
<h3>类的继承和重载.extends关键字和final关键字</h3>
<?php
      class father
         {
     public function printNUM()
         {
	  printf("%d",10);
	     }
    }
	class child extends father
	    {
    public function printNUM()
        {
     printf("%d",10*10);
     }
 }
 $father=new father();
 echo $father->printNUM();
 echo "\t";
 $child=new child();
 echo $child->printNUM();
?>
<h3>接口。接口的主要思想是指定一个实现了该接口的类必须实现的一系列方法。interface声明接口</h3>
<?php
interface test
{
function fun();
	}
	class work implements test
	{
function fun()
{
echo "快跑!";
	}
		}

		$work=new work();
		$work->fun();
?>
<h3>常量的使用</h3>
<?php

   const str="你好";
	echo str;
?>
<h3>对象的克隆</h3>
<?php
echo "用Clone关键字所克隆的对象只与原对象具有相同的特征,但二者并不代表同一对象,而是相互独立的","<br>";
class person
{
public function fun()
{
echo "快跑!";
	}
	}

	$a=new person();
	$b=clone $a;
	$a->fun();

?>
<h3>_autoload()方法</h>
<?php
/*include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。
function _autoload($name)
{
include_once $name;
	}
	_autoload("mysql.php");
	*/
?>
<h3>使用instanceof关键字判断实例类型<h3/>
<?php
class ball
{}
$basketball=new ball();
if($basketball instanceof ball )
{
echo "yes,可以断定basketball是类的实例";
	}
	else
	{
echo "NO";
		}
?>
<h3>使用this关键字调用类成员</h3>
<?php
class china
{
 private $x;
 private $y;

 public function china($x,$y)
     {
     $this->x=$x;
     $this->y=$y;
	 }

 public function fangfa()
 {
   echo  "数字:".$this->x;
   echo  "数字:".$this->y;
	 }
 }
	$person1=new china(10,99);
	echo "<br>";
	$person1->fangfa()
?>
<h3>self调用静态成员</h3>
<?php
echo "elf是指向类本身,也就是PHP self关键字是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。","<br>";
class Counter
{
//定义属性,包括一个静态变量
private static $firstCount = 0;
private $lastCount;
//构造函数
function __construct()
{
$this->lastCount = ++self::$firstCount;
 //使用PHP self关键字来调用静态变量,使用self调用必须使用::(域运算符号)
}
//打印最次数值
function printLastCount()
{
print( $this->lastCount );
}
}
//实例化对象
$countObject = new Counter();
$countObject->printLastCount();
 //输出 1
?> 

</body>
</html>

  

时间: 2024-10-30 04:18:04

使用self关键字调用类体中的静态成员的相关文章

JAVA成员变量为什么不能在类体中先定义后赋值

1 package dx; 2 3 public class Test1 { 4 5 int a111;//定义成员变量(全局变量) 6 7 8 9 // a = 1;//此处若给变量赋值,会报错,JAVA所有的除定义或声明语句之外的任何语句都必须在方法内部(而方法又必须在某个类内部,不存在游离于类外部的方法或成员) 10 11 12 13 public static void main(String[] args) { 14 // TODO Auto-generated method stub

php中调用类的属性和函数的方法-&gt;_=&gt;_::_$this-&gt;区别

在php中有同学经常搞不明白->,=>,::,$this->的作用,下面通过例子讲解下. 一.->用来引用一个类的属性(变量).方法(函数) 可以把->理解成调用的意思 如: <?php Class a{ Var $id; Function add(){ $this->id="test"; echo "abc"; } } $b = new a; $b->add();  //调用类a中的add()方法, 输出为abc E

面向对象的static关键字(类中的static关键字)

转自:http://blog.csdn.net/xiayefanxing/article/details/7382192 1.静态数据成员 在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员. 先举一个静态数据成员的例子. 1 //Example 5 2 #include "stdafx.h" 3 #include <iostream> 4 using namespace std; 5 class Myclass 6 { 7 public: 8

C++ 类模板三(类模版中的static关键字)

//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通

C# 类型运算符重载在类继承中的调用测试

这是一篇晦涩难懂的片面的研究 一,简单的继承层次 class CA { } class CB : CA{ } class CC : CB{ } } void Test(CA oa){//CATest Debug.Log ("CA==============="); } void Test(CB oa){//CBTest Debug.Log ("CB==============="); } void Test(CC oa){//CCTest Debug.Log (&q

Eclipse 中java跨工程调用类

在Eclipse中,有时候需要跨工程调用其他工程中的方法.如下面有两个Java Project : 如果要在A工程中调用B工程中的类,可以将B工程添加到A工程中: A---- >Build Path---- >Configure Build Path---- >Java Build Path 选择Projects 这样在项目A中的类就可以直接import B项目中的类啦. Eclipse 中java跨工程调用类

C++类定义体中的typedef

在类中使用typedef, 最好将其放在类定义的头部. 如下例: 在类定义体中声明的LENGTH的typedef被当做重复定义,导致编译失败. 并且类中的成员函数均绑定到全局的typedef. 当你的类定义体中使用了typedef,请尽量放在类定义的首部.那么类中对于该typedef的引用将会是正确且一致的. C++类定义体中的typedef

理解ATL中的一些汇编代码(通过Thunk技术来调用类成员函数)

我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的.但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水. 下面我们主要分析一下ATL中的一些汇编代码. ATL中出现汇编代码主要是2处,一处是通过Thunk技术来调用类成员函数处理消息:还有一处是通过打开_

在基类构造器中调用虚方法需谨慎

最近,在基类的构造函数中调用虚方法时,发现了一个问题.先把问题重现如下: class Program { static void Main(string[] args) { var c = new Chinese(18); Console.ReadKey(); } } public class People { public int Age { get; protected set; } protected People() { this.Say(); } public virtual void