黑马程序员技术交流社区

标题: String 静态类为什么也有构造方法 [打印本页]

作者: .net_交流    时间: 2014-7-25 13:10
标题: String 静态类为什么也有构造方法
本帖最后由 .net_交流 于 2014-7-26 23:17 编辑

是不是所有的类都有构造方法,静态类不能实例化,要构造方法有什么用?????
作者: 许庭洲    时间: 2014-7-25 13:18
每个类都有构造函数,即使程序员没有声明它,编译器也会自动地为程序员提供一个默认的构造函数。
作者: .net_交流    时间: 2014-7-25 13:46
许庭洲 发表于 2014-7-25 13:18
每个类都有构造函数,即使程序员没有声明它,编译器也会自动地为程序员提供一个默认的构造函数。 ...

String 类是静态的,为什么还有 new string(char[] c) 和 其他的构造函数 ,这和new个对象实例有什么区别,不是静态不能实例吗???
作者: qsq0000hm    时间: 2014-7-25 14:32
string类是sealed修饰符修饰的,表示这个类不能被继承。并不是静态的,是密封类。

打开VS,定义一个string字段,鼠标放到string关键字上面,右键转到定义可以看一下。
作者: qsq0000hm    时间: 2014-7-25 14:47
string类不是静态的,但是里面有很多静态的方法。也有非静态成员。
静态类的成员必须全部是静态的。
非静态类可以有静态成员,也可以有非静态成员。
可以去研究一下静态构造函数:
(1) 用于对静态字段、只读字段等的初始化。  
(2) 添加static关键字,不能添加访问修饰符,因为静态构造函数都是  私自有的。   
(3) 类的静态构造函数在给定应用程序域中至多执行一次:只有创建 类的实例或者引用类任何静态成员才激发静态构造函数 . 
(4) 静态构造函数是不可继承的,而且不能被直接调用。  
(5) 如果类中包含用来开始执行的 Main 方法,则该类的静态构造函 数将在调用 Main 方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。 
(6) 如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。 
(7) 无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,
但一个属于类,一个属于实例,所以不会冲突




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2