C#中私有构造函数的特点和用途实例解析
本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数。相信对于大家更好的理解C#中的私有构造函数有一定的促进作用。具体如下:
一、带私有构造函数的类不能被继承
在Animal类中声明一个私有构造函数,让Dog类来继承Animal类。
public class Animal { private Animal() { Console.WriteLine("i am animal"); } } public class Dog : Animal { }
运行程序,生成解决方案,报错如下图所示:
二、带私有构造函数的类不能被实例化
运行如下测试代码:
class Program { static void Main(string[] args) { Animal animal = new Animal(); } } public class Animal { private Animal() { Console.WriteLine("i am animal"); } }
程序运行后生成解决方案,报错如下图所示:
三、私有构造函数的应用
有些时候,我们不希望一个类被过多地被实例化,比如有关全局的类、路由类等。这时候,我们可以为类设置构造函数并提供静态方法。
class Program { static void Main(string[] args) { string str = Animal.GetMsg(); Console.WriteLine(str); Console.ReadKey(); } } public class Animal { private Animal() { Console.WriteLine("i am animal"); } public static string GetMsg() { return "Hello World"; } }
总结:一旦一个类被设置成私有构造函数,就不能被继承,不能被实例化,这种情况下,通常为类提供静态方法以供调用。
相关推荐
-
C#中静态构造函数的几点说明介绍
静态构造函数是C#的一个新特性,其实好像很少用到.不过当我们想初始化一些静态变量的时候就需要用到它了.这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次.也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用. 复制代码 代码如下: class SimpleClass{// Static constructorstatic SimpleClass(){//}} 在使用静态构造函数的时候应该注意几点: 1.静态构造函数既没有访问修饰符,也没有参数.因为是.NE
-
全面解读C#编程中的析构函数用法
析构函数用于析构类的实例. 备注 不能在结构中定义析构函数.只能对类使用析构函数. 一个类只能有一个析构函数. 无法继承或重载析构函数. 无法调用析构函数.它们是被自动调用的. 析构函数既没有修饰符,也没有参数. 例如,下面是类 Car 的析构函数的声明: class Car { ~Car() // destructor { // cleanup statements... } } 该析构函数隐式地对对象的基类调用 Finalize.这样,前面的析构函数代码被隐式地转换为以下代码: protec
-
C#私有构造函数使用示例
声明空构造函数可阻止自动生成默认构造函数.注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数.但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化. 示例代码: 复制代码 代码如下: public class PrivateConClass{private static PrivateConClass pcc; private PrivateConClass(){Console.WriteLine("This private constructure f
-
C#中构造函数和析构函数用法实例详解
本文实例讲述了C#中构造函数和析构函数用法.分享给大家供大家参考,具体如下: 构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误.本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项. 一.构造函数与析构函数的原理 作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性.C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,这的确帮了程序员的大忙.但是程序通过了编译检查并不表示错误
-
C#中派生类调用基类构造函数用法分析
本文实例讲述了C#中派生类调用基类构造函数用法.分享给大家供大家参考.具体分析如下: 这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数 例如: public class MyBaseClass { } public class MyDerivedClass : MyBaseClass { public MyDerivedClass() { Console.WriteLine("我是子类无参构造函数&qu
-
C# 静态构造函数使用总结
•静态构造函数既没有访问修饰符,也没有参数. •如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数. •在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了. •如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行. •如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运
-
c#只读字段和常量的区别,以及静态构造函数的使用实例
复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{ /// <summary> /// 作者:it小金 /// 功能:c#只读字段和常量的区别,以及静态构造函数的使用 /// </summary> class Program { stat
-
C#中析构函数、Dispose、Close方法的区别
一.Close与Dispose这两种方法的区别 调用完了对象的Close方法后,此对象有可能被重新进行使用:而Dispose方法来说,此对象所占有的资源需要被标记为无用了,也就是此对象要被销毁,不能再被使用.例如常见.Net类库中的SqlConnection这个类,当调用完Close方法后,可以通过Open重新打开一个数据库连接,当彻底不用这个对象了就可以调用Dispose方法来标记此对象无用,等待GC回收. 二.三者的区别如图 析构函数 Dispose方法 Close方法 意义 销毁对象 销毁
-
C#使用this关键字实现串联构造函数调用方法
本文实例讲述了C#使用this关键字实现串联构造函数调用方法.分享给大家供大家参考.具体分析如下: 在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分封装成一个方法,但还有一种更为合理简单的方法,下面就通过this关键字来实现串联构造函数做一简单示例. 示例代码如下: 复制代码 代码如下: public class Person {
-
C#中私有构造函数的特点和用途实例解析
本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数.相信对于大家更好的理解C#中的私有构造函数有一定的促进作用.具体如下: 一.带私有构造函数的类不能被继承 在Animal类中声明一个私有构造函数,让Dog类来继承Animal类. public class Animal { private Animal() { Console.WriteLine("i am animal"); } } public class Dog : Animal { } 运行程序,生成解决方
-
JFrame中添加和设置JPanel的方法实例解析
Swing 程序用JFrame 对象实现了它们的窗口.JFrame 类是AWT Frame 类的一个子类.它还加入了一些Swing 所独有的特性.与 Frame 的使用十分相似.唯一的区别在于,你不能将组件加入到JFrame中.你可以或者将组件加入到JFrame 的content pane(内容面板) 中,或者提供一个新的content pane(内容面板). 面板与顶层容器的不同点:面板不能独立存在,必须被添加到其他容器内部(面板可以嵌套). JFrame 有一个 Content Pane,窗
-
Python中的random.uniform()函数教程与实例解析
random.uniform( ) 函数教程与实例解析 1. uniform( ) 函数说明 random.uniform(x, y)方法将随机生成一个实数,它在 [x,y] 范围内. 2. uniform( ) 的语法与参数 2.1 语法 # _*_ coding: utf-8 _*_ import random random.uniform(x, y) 或 # _*_ coding: utf-8 _*_ from random import uniform uniform(x, y) 提示:
-
Java运用设计模式中的建造者模式构建项目的实例解析
1.建造者模式概念 定义: 将一个复杂的对象构建与其表示相分离,使得同样的构建过程可以创建不同的表示: 核心 : 构建与表示分离,同构建不同表示 区别于 抽象工厂模式 : (1)与抽象工厂模式 相似,因为它也可以创建复杂对象.主要的区别是建造者模式着重于 一步步构造一个复杂对象,关注的是零件类型和装配工艺的顺序 .而抽象工厂模式着重于多个系列的产品对象(简单的或是复杂的).建造者模式在最后的一步返回产品,而对于抽象工厂来说,产品是立即返回的. (2)在建造者模式里,有个指导者,由指导者来管理建造
-
MongoDB中强大的统计框架Aggregation使用实例解析
听说项目里面Aggregation用的多,那就专门针对这个多多练习一下. 基本的操作包括: •$project - 可以从子文档中提取字段,可以重命名字段 •$match - 可以实现查找的功能 •$limit - 接受一个数字n,返回结果集中的前n个文档. •$skip - 接受一个数字n,丢弃结果集中的前n个文档.效率比较低,依然会遍历前n个文档. •$unwind - 可以将一个包含数组的文档切分成多个, 比如你的文档有 中有个数组字段 A, A中有10个元素, 那么经过 $unwind处
-
Android App中的多个LinearLayout嵌套布局实例解析
在做android UI布局时,用了LinearLayout嵌套,发现效果并不如我预料一般 查了下资料,说是要设置layout_weight属性 资料说得不是很清楚,也没仔细看,就去弄,结果越弄越混乱. 于是静下心来,自己写xml测试,发现如下. 如果LinearLayout是最外面的一层,它是不会弹出layout_weight属性的, 换句话说最外层不能用layout_weight xml布局如下 <LinearLayout xmlns:android="http://schemas.
-
深入理解Java中的构造函数引用和方法引用
JDK 8 见证了一个特殊特性的出现:构造函数引用和方法引用.在本文中, Adrian D. Finlay 探讨了开发人员如何释放构造函数引用的真正潜力. 方法引用的一些背景 如果你还不知道 Java 构造函数本身就是特殊的方法,那么阅读方法引用的基本示例将对读者有所帮助,通过了解这些内容,可以了解构造函数引用是什么. 「方法引用为已经有名称的方法提供易读的 lambda 表达式.」 「它们提供了一种无需执行就可以引用方法的简单方式.」 以上引自<Java 8 编程参考官方教程(第 9 版)>
-
解析C#中的私有构造函数和静态构造函数
私有构造函数 私有构造函数是一种特殊的实例构造函数.它通常用在只包含静态成员的类中.如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例.例如: class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... } 声明空构造函数可阻止自动生成默认构造函数.注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有
-
ASP.NET私有构造函数用法分析
本文实例分析了ASP.NET私有构造函数用法.分享给大家供大家参考.具体分析如下: 一.私有构造函数的特性 1.一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员. 2.私有构造函数是一种特殊的实例构造函数.它通常用在只包含静态成员的类中.如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例. 3.私有构造函数的特性也可以用于管理对象的创建.虽然私有构造函数不允许外部方法实例化这个类,
-
Java私有构造函数作用原理解析
这篇文章主要介绍了Java私有构造函数作用原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 强调类的单例模式 public class Elvs { //公有的静态域,来说明该类只能有一个实例(实例化一次后,后面都是同一个实例) public static final Elvs INSTANCE=new Elvs(); private Elvs(){}//将构造函数定义为私有变量后,就不能在外部去调用构造函数实例化类了 public
随机推荐
- 多特下载站中改首页www.2345.com的解决修改方法
- php截取指定2个字符之间字符串的方法
- Python ftp上传文件
- Python实现更改图片尺寸大小的方法(基于Pillow包)
- 雷客图ASP站长安全助手的ASP木马查找功能
- C#文件上传与下载的实现方法
- Android 拍照并对照片进行裁剪和压缩实例详解
- Ubuntu10下如何搭建MySQL Proxy读写分离探讨
- JavaScript中关联原型链属性特性
- 收藏的SQLServer技巧集
- Apply an AutoFormat to an Excel Spreadsheet
- python web框架学习笔记
- 利用Asp.Net回调机制实现进度条
- apache和php之间协同工作的配置经验分享
- php利用cookie实现访问次数统计代码
- C++的类型转换详细介绍
- Android studio设计简易计算器
- SpringBoot使用CXF集成WebService的方法
- 对Django中内置的User模型实例详解
- Django rest framework实现分页的示例