今天笔者在学习PHP相关视频的时候,突然间就想纠结一下public
static和public。
去度娘搜了一下相关资料,C#学者也提到过类似问题:
1、问:调用App_Code里的cs文件的时候 有些调用要在public 后面加static才能运行
有些必须不能加,想问问什么样的类前面要用static?
答:加static
的是静态成员,不能实例化在你运行的时候他自己在内存中开辟了块空间,不用在new, 有点像全局变量,如果不用你必须去
实例化(new)才能用。
编程语言都是相关的,看到这儿,基本就了解了,后面又查看了更详细的PHP资料:
static:静态。
可以设置:静态类、静态变量、静态方法。
没有使用static修饰的成员为实例成员(必须要先new—实例化)。
静态成员的使用:通过类名。
1。不加static修饰的成员是对象成员,归每个对象所有。
2。加static修饰的成员是类成员,可以由一个类直接调用,为所有对象共有。
用static关键字标识的程序元素是静态的,不用static标识的程序元素是非静态.
两者的区别在于:
静态的东西是在类型加载初始时初始化的,并且与类相关.
非静态东西一般放在实例的构造函数中初始化,它是与特定类的实例相关的.
举例:
static变量可以不必实例化直接使用.
//定义类A
class A
{
public static string
aUser="wangjian";
}
//定义类B
class B
{
string bUser = A.aUser;
//类B可以直接使用类A的aUser,而不必先实例化类A.
}
using System;
namespace A.B.C
{
public class MyClass
{
static string a="a
string";//静态方法display()只能访问静态成员a
public static void Main()
{
Display();
}
public static void
Display()
{
Console.WriteLine(a);
}
}
}
public:公共。
在类名前边用的话,说明这个类是公共类。
可以设置:
public方法, public属性, 和public类
表示在其它任何类或方法中都可以访问。
要访问其它类中的public的属性、public方法,则必须必对那个类进行实例化。
public : 公共成员,完全公开,没有访问限制。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
internal: 在同一命名空间内可以访问。