- 1
- 0
- 约8.28千字
- 约 12页
- 2016-12-06 发布于重庆
- 举报
C基礎知识系列五(构造函数)
前言
本节主要来学习下实例构造函数、私有构造函数和静态构造函数。
构造函数的作用:
1、当一个类在new实例化对象时,可调用构造函数进行初始化对象。
2、不带参数的构造函数称为“默认构造函数”。?无论何时,只要使用?new?运算符实例化对象,并且不为?new?提供任何参数,就会调用默认构造函数。除非类是static的,否则 C# 编译 器将为无构造函数的类提供一个公共的默认构造函数,以便该类可以实例化。
3、通过将构造函数设置为私有构造函数可以阻止类被实例化。
4、结构类型的构造函数与类的构造函数类似,但是 structs 不能包含显式默认构造函数,因为编译器将自动提供一个构造函数。此构造函数会将struct中的每个字段初始化为默认值。 只有当 struct 用 new 实例化时,才会调用此默认构造函数。
实例构造函数
使用 new 表达式创建某个类的对象时,会使用实例构造函数创建和初始化所有实例成员变量。 要初始化静态类或非静态类中的静态变量,必须定义静态构造函数。
class CoOrds
{
public int x, y;
// constructor
public CoOrds()
{
x = 0;
y = 0;
}
}
只要创建基于?CoOrds?类的对象,就会调用此实例构造函数。?诸如此类不带参数的构造函数称为“默认构造函数”。?然而,提供其他构造函数通常十分有用。?例如,可以向?CoOrds?类添加构造函数,以便可以为数据成员指定初始值:
public CoOrds(int x, int y)
{
this.x = x;
this.y = y;
}
这样便可以用默认或特定的初始值创建?CoOrd?对象,如下所示:
CoOrds p1 = new CoOrds();
CoOrds p2 = new CoOrds(5, 3);
如果某个类没有构造函数,则会自动生成一个默认构造函数,并使用默认值来初始化对象字段。
也可以用实例构造函数来调用基类的实例构造函数。?类构造函数可通过初始值设定项来调用基类的构造函数,如下所示:
?
abstract class Shape
{
public const double pi = Math.PI;
protected double x, y;
public Shape(double x, double y)
{
this.x = x;
this.y = y;
}
public abstract double Area();
}
class Circle : Shape
{
public Circle(double radius)
: base(radius, 0)
{
}
public override double Area()
{
return pi * x * x;
}
}
在此示例中,Circle?类将表示半径和高度的值传递给?Shape(Circle?从它派生而来)提供的构造函数。
私有构造函数
?私有构造函数是一种特殊的实例构造函数。?它通常用在只包含静态成员的类中。?如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。?例如:
class NLog
{
// Private Constructor:
private NLog() { }
public static double e = Math.E; //2.71828...
}
声明空构造函数可阻止自动生成默认构造函数。 注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。 但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。
当没有实例字段或实例方法(如 Math 类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。 如果类中的所有方法都是静态的,可考虑使整个类成为静态的。
下面是使用私有构造函数的类的示例:
public class Counter
{
private Counter() { }
public static int currentCount;
public static int IncrementCount()
{
return ++
您可能关注的文档
最近下载
- 音体美教学常规要求.doc VIP
- (2025)新课标《义务教育数学课程标准(2022年版)》测试题(附含答案) .pdf VIP
- 质量工程师中级培训教程.doc VIP
- 高中英语(北师大版)必修3—单词表.pdf VIP
- Unit 1 Time to Relax (第1课时) Section A 1a- 2d 课件 2026年春人教版英语八年级下册.pptx VIP
- QE质量工程师培训完整版教材.ppt VIP
- 杜曼教育——如何教宝宝学数学.pdf VIP
- 香港小学中文修辞手法练习.pdf VIP
- 2025-2026学年初中数学八年级上册(2024)沪教版(五四制)(2024)教学设计合集.docx
- GNSS接收机抗干扰技术研究.pptx VIP
原创力文档

文档评论(0)