【php】new static的用法

在一个类中,常见的是new self()操作,代表返回自身类的实例。

当父类中存在方法,然后每个子类继承于父类,调用这个方法会返回自身的实例化对象,

<?php
class A
{
    function create()
    {
         return new self();
     }
}

class B extends A
{

}

B->create(); //返回A的实例化

那么当子类调用create时,返回的是A类的实例

现在有个需求就是,调用父类中返回实例化的方法时,返回当前子类的实例化,那么就可以用new static()来操作了

<?php
class A
{
    function create()
    {
         return new static();
     }
}

class B extends A
{

}

B->create()  //返回B类的实例化对象
时间: 2024-10-18 04:39:31

【php】new static的用法的相关文章

Java下static关键字用法详解

Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static 可以修饰: 1. 语句块 2. 成员变量(但是不能修饰局部变量) 3. 方法 4. 接口(内部接口) 5. 类(只能修饰在类中的类, 即静态内部类) 6. jdk 1.5 中新增的静态导入 那么static 修饰的表示什么呢? 当创建一个类时,就是在创建一个新类型,描述这个类的对象的外观和行为,除

Java中static的用法

static静态,作为修饰符,最初是由c引入,一开始static表示退出一个块后依然存在的局部变量.随后,static表示不能被其他文件访问的全局变量和函数.到了C++和java,static表示属于类且不属于类对象的变量和函数. 从具体用法来看,主要用到5个方面. 一.静态域. static修饰类的域(字段,成员变量),被static修饰的域在类中只有一个,它属于类,也称为类域.它只能被类操作,不能由对象操作.比如 pubic class Employee { private static i

ava下static关键字用法详解

Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static 可以修饰: 1. 语句块 2. 成员变量(但是不能修饰局部变量) 3. 方法 4. 接口(内部接口) 5. 类(只能修饰在类中的类, 即静态内部类) 6. jdk 1.5 中新增的静态导入 那么static 修饰的表示什么呢? 当创建一个类时,就是在创建一个新类型,描述这个类的对象的外观和行为,除

C++static关键字用法

一.static的作用有三种:限制变量或函数作用域.保持变量内容的持久.默认初始化为0 1.被static关键字修饰的全局函数或者变量具有文件作用域,即只在当前文件中可见. 2.被static修饰的变量会被存储在静态存储区,生命周期也为从定义直至程序结束.对于局部变量,即使在函数退出后该静态变量依然存在,然而却也无法访问.此外,static修饰的变量一生只会被初始化一次(这点经常被用作面试的小题,需注意). 3.正是因为被static修饰的变量会被存储在静态存储区,所以才有了这个一条.因为静态存

static 的用法

static 英文意思是 “静态的”. 在C 语言中,它用在 函数或变量前面. 1. 用在变量前面,它表示该变量是静态变量,意思是说,这个变量放在内存的静态区域,即使作用域结束,值也会一直保存着, 不会像变量那样,随作用域结束而释放所占的内存. static修饰的变量作用域有两种:1)修饰全局的变量,作用域在声明的文件中,其他文件不可调用. 2)修饰局部的变量,作用域在局部变量所在的函数中,其他函数不可见该变量. 2. 用在函数前,表示静态函数,不能被当前文件之外的其他文件调用. static

C#类中static变量用法分析

本文实例讲述了C#类中static变量用法.分享给大家供大家参考.具体分析如下: 先来看一段代码: 代码如下: using System; namespace Param { class Class1 { static int i = getNum(); int j = getNum(); static int num = 1; static int getNum() { return num; } [STAThread] static void Main(string[] args) { Co

static的用法及作用

static可以用来修饰属性.方法和代码块.static修饰的变量属于这个类所有,既由这个类创建的所有对象共用一个static变量.通常把static修饰的属性和方法称为类属性(类变量).类方法.不使用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量).实例方法.使用static修饰方法的最常见的例子是我们熟悉的main()方法.下面通过一个示例学习是static的用法及使用static修饰属性和代码块,是如何分配内存空间的.代码示例如下: 运行结果如图所示: 从结果中可以得

Java 中static的用法整理

static在java中属于使用相当频繁的一个关键字了,下面来总结一下它的用法,顺便梳理一下自己的知识树. 一.static变量: 静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配. 实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响. static成员变量的初始化顺序按照定义的顺序进行初始化. 二.static方法: 首先要明确的一点,static所修饰的变量.方法.代码块等是在JVM中被直接装入内存的

#define static const 用法 (转)

1.Define用法: define主要是用于宏常量定义的,使程序看起来更简洁明了,方便代码维护,#define定义的实质只是一个常数的名字,没有具体数据类型的,没有分配内存空间.在编译是会被编译器替换为该常数.每次使用该宏定义,就要进行编译并分配空间,若一个程序中多次使用define定义的数据,则就会有多份拷贝.这么做是为了提高程序的可读性,但安全性相对差点. 2.const用法: const定义的全局数据变量,其基本作用和define相同,但又在define的基础上增加了好多功能.const

c++中static的用法详解

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45290467 C 语言的 static 关键字有三种(具体来说是两种)用途: 1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数. int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i; } 要明白这个用法,我们首先要了解c/c++的内存分