《.NET程序员面试秘笈》----面试题6 请简述静态类和静态类成员

简介: 【考点】静态类和静态类成员的理解,static在应用中的特殊性。

本节书摘来自异步社区《.NET程序员面试秘笈》一书中的第1章,面试题6,作者: 张云翯, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

面试题6 请简述静态类和静态类成员

.NET程序员面试秘笈
【考点】静态类和静态类成员的理解,static在应用中的特殊性。

【出现频率】

【解答】

在ch01目录下新建一个程序文件,并命名为Static.cs,编写代码如程序1.7所示。



image

在命令行下编译Static.cs后,执行Static程序,其效果如图1.9所示。


6dabcc4a74749930cf9dfcb015e4688cfadab9c6

本例的Main方法中,首先将用户第1次输入的值通过逗号分隔为2个字符串,再分别赋值给PC类的静态字段,即cpu和memory;然后将用户的第2次输入也分隔为2个字符串,并转换为整数类型赋值给p和n。通过传递参数p和n给PC的构造函数创建了PC类的对象ibm,并进行了初始化。在用户输入值后的第1行访问了PC类的2个静态字段,并通过实例方法计算了总价。在第2行直接调用了静态类CpuMsg的静态方法getmsg(),静态类CpuMsg完全不需要实例化,可以很方便地直接在程序中使用。在.NET的类库中有很多类似的静态类,可以在程序中直接使用其方法,例如Math类。

【分析】

static是比较特殊的修饰符,它所修饰的类或类成员被称为静态类或静态类成员。

当类中某些成员不需要创建实例实现,则可将其声明为静态类成员。静态成员在访问时直接引用类名而非对象名,同样,“this”关键字也无法访问静态成员。这些成员可用作该类的多个对象共享的数据,因为静态类成员不依赖某个对象。声明静态类成员如以下代码所示:

访问修饰符 static 数据类型 类成员;

当类中没有和对象实例相关的成员时,即类体中只有静态成员,可声明该类为静态类。静态类无法用new创建对象,所以并不能编写构造函数,并且该类是密封类(即无法被继承)。静态类的声明方法如以下代码所示:

访问修饰符 static class 类名称

{
 静态类成员1;
 静态类成员2;
 静态类成员3;
 ...
}

必须注意的是,类中的常数声明和类型声明默认为静态,如类体中声明1个类,这个类默认为static,即无法被所属类的对象访问。

注意:

声明静态类时,必须保证其内含成员全部为静态成员。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
1月前
|
SQL 存储 Oracle
Oracle 面试题及答案整理,最新面试题
Oracle 面试题及答案整理,最新面试题
75 0
|
1月前
|
消息中间件 存储 负载均衡
RocketMQ 面试题及答案整理,最新面试题
RocketMQ 面试题及答案整理,最新面试题
152 4
|
1月前
|
消息中间件 存储 监控
RabbitMQ 面试题及答案整理,最新面试题
RabbitMQ 面试题及答案整理,最新面试题
117 1
|
1月前
|
消息中间件 存储 监控
Kafka 面试题及答案整理,最新面试题
Kafka 面试题及答案整理,最新面试题
139 3
|
1月前
|
缓存 前端开发 Java
Spring MVC 面试题及答案整理,最新面试题
Spring MVC 面试题及答案整理,最新面试题
90 0
|
1月前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
111 0
|
1月前
|
负载均衡 Java API
Spring Cloud 面试题及答案整理,最新面试题
Spring Cloud 面试题及答案整理,最新面试题
138 1
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
208 0
|
14天前
|
存储 缓存 安全
兄弟面试了百度,面试题分享一波
兄弟面试了百度,面试题分享一波
38 0
|
1月前
|
SQL 监控 大数据
DataGrip 面试题及答案整理,最新面试题
DataGrip 面试题及答案整理,最新面试题
69 0