时间:2021-05-26
下面我们举个栗子:
class Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); }}class Son extends Father {}echo get_class(Son::getSelf()); // Fatherecho get_class(Son::getStatic()); // Sonecho get_class(Father::getSelf()); // Fatherecho get_class(Father::getStatic()); // Fathernew self
这里面注意这一行 get_class(Son::getStatic()); 返回的是 Son 这个 class, 可以总结如下:
self 返回的是 new self 中关键字 new 所在的类中,比如这里例子的 :
始终返回 Father。
new static
static 则上面的基础上,更聪明一点点:static 会返回执行 new static() 的类,比如 Son 执行 get_class(Son::getStatic()) 返回的是 Son, Father 执行 get_class(Father::getStatic()) 返回的是 Father
而在没有继承的情况下,可以认为 new self 和 new static 是返回相同的结果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言本文主要跟大家介绍了关于PHP面向对象中newself()与newstatic()的区别,这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底
为了弄清楚这个问题我们来看三段代码产生的结果:code1:new和blank的区别 code2:new和blank的区别 new一个新ancho
1.日文转UTF-8Iconv.new('cp932','utf-8')与Iconv.new('shift_jis','utf-8')的区别Iconv.new(
前言本文主要给大家介绍了Go语言中函数new与make的使用和区别,关于Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我们定义生成变量
使用外部方法时(不管是static还是非static),都要先new一个对象,才能使用该对象的方法。举例如下:测试函数(这是错误的):publicclassTe