静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用。
如:
public class Per{
public static String getType(){
return "人类"
}
public String getName(){
return "张三"
}
}
上面这个类中的getType方法,在没有new对象前这就可以这样用:
String type=Per.getType()//type="人类"
而getName方法则不能这样使用,编译都不会通过
getName必须这样:
Per p=new Per()
String name=p.getName()//name="张三"
当然,getType方法也可能通过对象调用:
String type=p.getType()//type="人类"
静态类和非静态类的主要区别:主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法,即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法。
静态类的主要特性:
1:仅包含静态成员。
2:无法实例化。
3:是密封的。
4:不能包含实例构造函数。
5:非静态类可以包含静态的方法、字段、属性或事件;
6:静态方法和属性不能访问其包含类型中的非静态字段和事件
7:静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员;
8:C# 不支持静态局部变量(在方法内部定义静态变量)。
非静态类在使用时必须要实例化,每次使用时都要进行实例化,一般情况下使用比较频繁的类,可以使用静态类,比如LogClass,ConfigClass等等。
由static关键修饰的内容
为静态
;
反之
,为非静态
静态变量
属于
类
,为所有对象共有
分静态变量
属于
对象
,
每个对象都可以有且属性值可以各异
静态变量优于非静态变量加载,故
静态代码块中不能引用非静态成员,会报错