如果你是编程新手,那么理解这个概念最好的方法就是将类和对象的关系理解为抽象与具体的关系
比如:马和黑马白马的关系
马 就是 类,是抽象的。
而白马,黑马则是具体的,是对象。
而self其实可以理解为在class内部如何调用具体的实例对象时 使用的一个变量符号
在其他语言中这个self可以理解为就是this 比如JavaScript
当然在PHP中也是有self这个关键字的
类变量,实例变量。在类中定义的变量很多时候也叫类的成员,包括:属性和方法。
类变量就是指类自身的属性,可以不用实例化就能访问,当然在实例上访问也是可以的。一般用于定义某个类自身具有的特点。这样所有的实例都能够访问这样一个值,同时便于节约内存。
而实例变量则是指某个具体的实例才拥有的属性,一般用来定义特殊的实例,比如黑马,白马。马都是有颜色的,那么黑马就是毛的颜色为黑色的马,白马则是毛的颜色为白色的马。这样毛的颜色就是一个实例属性,用来搞特殊化的。这种属性只能通过实例进行访问,不要将其设置为类的属性。
每一门面向对象的语言在对象这一块都是大同小异的。只是部分上的区别,比如类方法的可访问性,静态与实例方法,构造函数,魔术方法,属性定义getter,setter等细微不同。
建议有空多对比对比不同的语言就会发现区别了