1:静态类只用于包含静态成员的类型,不能被实例化,我们可以直接使用它的属性与方法,静态类最大的特点就是共享。静态类的特性是防止继承,防止外部来NEW。它相当于一个sealed abstract类。
2:静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。
3:类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。
4:使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。
5:总结静态类的主要功能如下:
它们仅包含静态成员。
它们不能被实例化。
它们是密封的。
它们不能包含实例构造函数(C# 编程指南)。
静态类不能使用abstract或sealed修饰符。
静态类默认继承自System.Object根类,不能显式指定任何其他基类。
静态类不能指定任何接口实现。
静态类的成员不能有protected或protected internal访问保护修饰符。
6:因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数和虚基类阻止类被实例化。如下
class TimeUtilClass
{
// Redefine the default ctor as private to prevent creation.
private TimeUtilClass (){}
public static void PrintTime()
{
Console.WriteLine(DateTime.Now.ToShortTimeString());
}
public static void PrintDate()
{
Console.WriteLine(DateTime.Today.ToShortDateString());
}
}
// Define type as abstract to prevent creation
abstract class TimeUtilClass
{
public static void PrintTime()
{
Console.WriteLine(DateTime.Now.ToShortTimeString());
}
public static void PrintDate()
{
Console.WriteLine(DateTime.Today.ToShortDateString());
}
}
使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。
静态类的特点及用途
时间: 2024-10-24 15:37:58
静态类的特点及用途的相关文章
静态类和类成员
1. 静态类仅包含静态成员 2. 无法实例化 3. 是密封的,不能被继承 4. 可以有一个静态的构造函数,不能包含实例构造函数 5. 直接用类名和成员访问静态成员 6. 静态类的一个普通用途可能就是创建一个包含一组数学方法的数学库 public static class MyMath { public static float PI = 3.14f; public static bool IsOdd(int x) { return x % 2== 1; } } a. 非静态类可以包含静态的方法.
C#有关继承知识点
C#有关继承的知识点 1.继承的定义和声明格式 通过继承我们可以定义新类.已存在的类称为基类(base class),新类称为派生类(derived class). 派生类扩展它的基类,不能删除它所继承的任何成员. 声明格式如下: class OtherClass : SomeClass { ... } 2.访问继承的成员 继承的成员可以被访问,就像派生类自己声明的一样. 所有类都派生自object类,object类是唯一的非派生类,它是继承结构的基础. 代码例子如下: class SomeCl
静态类
namespace ConsoleApplication1 { static class A { private static int b=1; public static void f() { Console.WriteLine("{0}",b); } static A() { b = 2; } } class Program { static void Main(string[] args) { //Console.WriteLine(A.b );b私有成员 A.f();//通过公
getClass()和getClassLoader()区别 以及ClassLoader详解及用途(文件加载,类加载)
获得ClassLoader的几种方法可以通过如下3种方法得到ClassLoader this.getClass().getClassLoader(); // 使用当前类的ClassLoader Thread.currentThread().getContextClassLoader(); // 使用当前线程的ClassLoader ClassLoader.getSystemClassLoader(); // 使用系统ClassLoader,即系统的入口点所使用的ClassLoader.(注意,s
Java学习笔记(七):内部类、静态类和泛型
内部类 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种内部类的用法. 成员内部类 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员). 1 class Circle { 2 private double radius = 0; 3 public static int count =1; 4 public Circ
Android文件存储的问题:ClassLoader和实现Parcelable接口后 详解及用途
可能小伙伴们读了我上一篇博客关于Android文件存储的的,在文件操作的时候大家有没有疑问呀,有就对了,可能在保存自定义对象的时候,如何序列化呀?ClassLoader到底是啥鬼呀?序列化后怎么读取出来呀?好吧,针对于上面的问题,我一个一个的说明吧! 今天主要是讲ClassLoader的用途, ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 1.1 几个相关概念ClassLo
几种查询方法(lambda Linq Enumerable静态类方式)
1.需要一个数据源类: using System; using System.Collections.Generic; namespace Linq { public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } public class Data { public static List<Student> studentLi
JQuery的用途和功能
jQuery库为Web脚本编程提供了通用的抽象层,使得它几乎适用于任何编程的情形.由天它容易扩展而且不断有新插件面世增强它的功能,所以这里无法涵盖它所有可能的用途和功能.抛开这些就其核心特性而言,jQuery能够满足下列需求: 一.取得页面中的元素. 如果不使用JavaScript库,遍历DOM树,以及查找HTML文档结构中某个特殊的部分,必需编写很多代码.jQuery为准确获取需要操纵的文档元素,提供了可靠而富有效率的选择符机制. 二.修改页面的外观. CSS虽然为呈现方式提供了一
解读Mirantis Fuel部署OpenStack各个网络的用途和分析
首先得说一声不好意思,之前的环境破坏了,一直没有机器进行测试,所以之前的文章到第三篇就结束了一直没找到时间和环境继续测试,这里就简单说说Fuel的网络. 部署OpenStack最复杂的应该算是网络部分了,Fuel简化部署OpenStack的同时网络类型对于新手来说也是费解,接下来我简单说一下我的理解. 下图是我们使用Fuel部署的时候遇到的几个网络类型,此时使用neutron vlan模式部署. 我们总结下,大致是五个网络: 1.PXE(部署网络):这是部署网络,也就是在节点开机的时候设置的网络