面向对象编程笔记--static

Posted the_owl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程笔记--static相关的知识,希望对你有一定的参考价值。

 

    通过static方法,提供静态的不需要实例化即可访问的方法或属性。所有的调用者可以使用同一个类(不实例化)或对象(只实例化一次),可以应用的场景:

    1)各个调用者共享数据,协同工作。

    2)对象只可以实例化一次。

    3)被调用对象的生命周期 与调用者无关。或者说,该对象有全局的生命周期,持续工作,提供给调用者的只是一个接口。

 

    类的实例由类自己来维护,对外提供一个 取实例的一个方法。

    典型代码:

public class TestClass
{
    //维护的实例
    private static TestClass instance;
    //对外提供的get实例的静态方法
    public static TestClass Instance
    {
        get
        {
            if (instance == null)
                instance = new TestClass();
            return instance;
        }
    }
}

    应用举例:

    WPF中关于DependencyProperty的定义

/*
*    两种使用方式
*        1)以总类的形式利用Dictionary,记录所有通过该类的静态注册方法注册的属性
*        2)生成新的对象
*
*/ 
public class DependencyProperty
{
    internal static Dictionary<object, DependencyProperty> RegisteredDps = new Dictionary<object, DependencyProperty>();
    internal string Name;
    internal object Value;
    internal object HashCode;
    //构造函数
    private DependencyProperty(string name, Type propertyName, Type ownerType, object defaultValue)
    {
        this.Name = name;
        this.Value = defaultValue;
        this.HashCode = name.GetHashCode() ^ ownerType.GetHashCode();
    }
    //注册函数
    public static DependencyProperty Register(string name, Type propertyType, Type ownerType, object defaultValue)
    {
        DependencyProperty dp = new DependencyProperty(name, propertyType, ownerType, defaultValue);
        RegisteredDps.Add(dp.HashCode, dp);
        return dp;
    }
}

 

以上是关于面向对象编程笔记--static的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

B站狂神说Java笔记-面向对象编程

JAVA学习笔记面向对象

Java编程基础-面向对象(中)

java学习笔记之面向对象static,final关键字