黑马程序员---静态类总结
来源:互联网 发布:真三国无双5优化补丁 编辑:程序博客网 时间:2024/05/22 09:42
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
1>调用静态方法的时候必须通过类名直接来调用,不能通过对象来调用,
也就是说使用静态成员不需要实例化对象。
2>静态成员会在整个应用程序退出时,才释放资源,所以可以在整个应用程序中共享数据。
3>静态类不能被实例化,不能被继承。
4>由于静态成员会在整个程序退出时,才释放资源,所以尽量避免写静态字段或静态属性,最好只写静态方法。
5>当给一个普通类添加静态字段后,系统会默认为该类生成一个静态构造函数【静态构造函数不能有访问修饰符、并且也不能带参数】
6>//静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。
静态构造函数不能有访问修饰符,不能有参数。
MyClass.M2();
Console.ReadKey();
1.什么情况下要将一个类标记为静态类
- 一般情况是,当这个类是一个工具类,里面都是方法。为了让用户调用的时候方便,不需要实例化对象,这时可以将该类标记为static类,此时该类中只能包含静态成员,不能包含实例成员。比如:Convert、Math、File、Console....
2.什么情况下需要在一个普通类中编写一个静态成员,而这个类不能标记为static?
- 当这个类需要被实例化的时候。如果这个类中有一个成员是所有对象都共享的数据,这时可以将该类中的这个成员标记为静态的,但是这个类还是一个实例类。
Console.WriteLine();
Math类等.
静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。
静态构造函数不能有访问修饰符,不能有参数。
类和方法前面,加上Sealed关键字后该类就不能被继承.
代码如下:
public sealed class C1 //sealed关键字 { public virtual void SayHello() { } } public class C2 : C1 //类C2不能继承C1了 { public override void SayHello() { } }//方法的密封public class C1 { public sealed virtual void SayHello() { } } public class C2 : C1 { public override void SayHello() //不能重写这个方法了,报错 { } }}
静态成员、静态类在程序中的任何一个地方都可以访问。
不会因为超出了方法的作用域而不能访问。
所以静态成员、静态类只有在程序退出的时候才会释放资源。
例如:
class Person { public static int age; public string Name { get; set; } } class Test { public void MyMethod() { Person per = new Person(); per.Name = "李四"; Person.age = 19;//在这个地方可以用 } } class Program { static void Main(string[] args) { Person p = new Person(); p.Name = "张三"; Person.age = 18;//在这个地方也可以用 Test t = new Test(); t.MyMethod(); Console.WriteLine(p.Name); Console.WriteLine(Person.age); Console.ReadKey(); } }
注意事项:
静态构造函数必须用static关键字标记
静态构造函数不能有访问修饰符
静态构造函数不能有参数。
静态构造函数只会被调用一次。在第一次使用静态类前。
静态类不能被实例化,就不会有对象,而this表示的是当前对象。所以在静态类不能使用this.
static StaticClass()
{
}
静态类不能被其他类继承
静态类只能继承自Object类。(静态类不能继承自其它类。)
继承(多态)、静态本身就是相反的。
静态类不能实现任何接口,(因为接口中的成员都是实例成员。*)
sealed:(*)密封类,不能被继承。
sealed关键字,表示类不能被继承。(密封类)
密封类表示不能被继承。String类。.net系统中本身对字符串有很多特殊处理(为String开了很多“绿灯”,String有很多特权,比如:不可变性,字符串池等等。),防止别的类继承后造成混乱。
禁止子类重写父类的方法。
静态类的本质abstract+sealed
静态类不能被实例化:abstract
静态类不能被继承:sealed
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
- 黑马程序员---静态类总结
- 黑马程序员——静态的总结
- 黑马程序员-----java静态代码块总结*
- <黑马程序员>代理模式总结-静态代理
- 黑马程序员_静态类
- 黑马程序员_单例和静态总结
- 黑马程序员:Java基础总结----静态代理模式&动态代理
- 黑马程序员_动态代理和静态代理总结
- 黑马程序员--Path类常用静态方法
- 黑马程序员---static 静态
- 黑马程序员—静态
- 黑马程序员_java_静态
- 黑马程序员__静态
- 黑马程序员 静态导入
- 黑马程序员_static静态
- 黑马程序员---Thread类总结
- 黑马程序员--常用类总结
- 黑马程序员-抽象类总结
- postgresql 分页
- 信息: The APR based Apache Tomcat Native library which allows optimal performance in production enviro
- 【JNI】 Android JNI入门实例(Windows+Cygwin+Eclipse)
- HibernateUtil.java
- apk 反编译
- 黑马程序员---静态类总结
- win7远程桌面连接设置
- Python工程师基础班
- hibernate 的 CascadeType 属性
- Oracle体系结构及备份(一)——了解体系结构
- 【netWork】android 网络发开通用工具类
- 截图功能实现(六)如何实现自定义调色板
- 灰帽子python学习(1)
- jquery 主题颜色切换+窗体移动+上下文菜单