天轰穿C# vs2010 04面向对象的编程之成员【原创】

 

类成员

老田:类中的所有成员都可以声明为 publicprivate。具体什么情况下该用哪一种这个就必须从类的成员的主要用途来说了。不同的用途所要使用的访问修饰符也会有区别。下面我们就类中的成员来分别说下吧。

类中的数据和函数称为类的成员。Microsoft的正式术语对数据成员和函数成员进行了区分。除了这些成员外,类还可以包含嵌套的类型(例如其他类)

函数成员提供了操作类中数据的某些功能,包括方法、属性、构造函数和析构函数、运算符以及索引器。

方法是与某个类相关的函数,它们可以是实例方法,也可以是静态方法。实例方法处理类的某个实例,静态方法提供了更一般的功能,不需要实例化一个类(例如Console. WriteLine()方法)

属性是可以在客户机上访问的函数组,其访问方式与访问类的公共字段类似。C#为读写类上的属性提供了专用语法,所以不必使用那些名称中嵌有GetSet的偷工减料的方法。因为属性的这种语法不同于一般函数的语法,在客户代码中,虚拟的对象被当做实际的东西。

下面就来分别讨论。

数据成员

       数据成员包含了类的数据——字段、常量和事件。数据成员可以是静态数据(与整个类相关)或实例数据(类的每个实例都有它自己的数据副本)。通常,对于面向对象的语言,类成员总是实例成员,除非用static(将当前类、方法、数据成员等修饰为静态,后面讨论)进行了显式的声明。

 

字段是与类相关的变量。在前面的例子中已经使用了User类中的字段。旦实例化User对象,就可以使用语法Object.FieldName(对象.字段名字)来访问这些字段:

            User user = new User();

            user._age =15;

            user._name = 老田;

       常量与类的关联方式同变量与类的关联方式一样。使用const关键字来声明常量。如果它们声明为public,就可以在类的外部访问。如下例,在商品类中分别申明了商品名、价格和颜色、生茶日期等四个私有字段,其中价格是只读,后面为商品日期定义一个常量,已保证在2012年之前生产的商品都不过期:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace oopTool

{

    public class Product

    {

        //非特殊情况,类中的字段均用private,也就是常说的私有变量或者私有字段

        // 商品名

        private string _name;

        // 价格 只读字段,使用readonly修饰为只读

        private readonly decimal _price = 3456.32M;

        // 颜色,静态字段,使用static关键字修饰

        private static  string _color;

        // 商品生产日期,将生产日期固定到一个超前的时间,这不是我发明的,使用const修饰为常量

        private const string _shengchanriqi = "2012-12-30";

    }

}

 

       上面有四种类型的字段:

       实例成员字段:这种字段随类被实例化(使用new实例化一个新的对象)的不同可能产生不同的变化。这是我们最常用的一种。

       静态字段:不因为类是否被实例化而变化。事实上,静态和实例本来就是相对的,在后面静态类和静态成员总详细讨论。

       只读字段:只读字段可以在构造函数中才赋值,甚至可以不赋值。readonly”是只读字段的关键字。

常量字段:常量字段只能在声明时赋值常量说明前还加const 保留字;

 

小天:实例成员字段我大概明白,但是只读和常量这两种有什么不同呢?我觉得都差不多,都不能再运行过程中被修改值。

老田:区别如下:

1)只读字段可以在声明处,构造函数或程序运行时初始化;常量字段必须在声明时初始化,字段的值在编译时必须是可计算的。

2)只读字段可以是静态的,默认不是静态;常量字段总是隐式静态的。

3)只读字段可以是任何值类型或引用类型;常量字段只能是内建的值类型,字符串或枚举值。

小天:你说类中的字段通常都是私有,那外面如何访问呢?

本文章为天轰穿原创文章,转载请注明出处及作者。 

原文地址:https://www.cnblogs.com/thcjp/p/2833926.html