C基礎知识系列五(构造函数).docVIP

  • 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 ++

文档评论(0)

1亿VIP精品文档

相关文档