zoukankan      html  css  js  c++  java
  • ASP.NET私有构造函数作用

    一、私有构造函数的特性

     

    1、一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员。

    2、私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。

    3、私有构造函数的特性也可以用于管理对象的创建。虽然私有构造函数不允许外部方法实例化这个类,但却允许此类中的公共方法(有时也称为工厂方法,factory method)创建对象。也就是说,类可以创建自身的实例、控制外界对它的访问,以及控制创建的实例个数

     

     

    二、私有构造函数作用实例说明

     

    1、带私有构造函数的类不能被继承

    在Animal类中声明一个私有构造函数,让Dog类来继承Animal类。

     
    C# 代码   复制
     
       public class Animal  
     {  
       private Animal()  
       {       Console.WriteLine("i am animal");  
    
       }  
     }  
    
     public class Dog : Animal  {       
     } 
    

     

    运行程序,生成解决方案,报错如下图所示:

     

    2、带私有构造函数的类不能被实例化

    运行如下测试代码:

     
    C# 代码   复制
     
       class Program  
     {  
       static void Main(string[] args)  
       {  
         Animal animal = new Animal();  
       }  
     }  
    
     public class Animal  
     {  
       private Animal()  
       {  
         Console.WriteLine("i am animal");  
       }  
     } 
    

     

    程序运行后生成解决方案,报错如下图所示:

     

     

    三、私有构造函数的应用

    有些时候,我们不希望一个类被过多地被实例化,比如有关全局的类、路由类等。这时候,我们可以为类设置构造函数并提供静态方法。

     
    C# 代码   复制
    
      public class PrivateConClass
    {
        private static PrivateConClass pcc;
        private PrivateConClass()
        {
            Console.WriteLine("This private constructure function. So you cannot create an instance of this class.");
        }
        public static PrivateConClass CreatePcc()
        {
            pcc = new PrivateConClass();
            return pcc;
        }
        public static void ShowStaticMethod()
        {
            Console.WriteLine("This is a static method. Just be called by Class name.");
        }
        public void ShowMethod()
        {
            Console.WriteLine("This is a Nonstatic method. Just be called by private static instance pcc.");
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {    
            PrivateConClass pcc = PrivateConClass.CreatePcc();
            pcc.ShowMethod();
            PrivateConClass.ShowStaticMethod();
        }
    }
  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/ranran/p/4071754.html
Copyright © 2011-2022 走看看