C#面向对象基础——字段、属性和索引器-创新互联
关于面向对象编程,在很多语言里面都出现过,最常用的如java和c++,
创新互联的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括网站设计、成都网站建设、电商网站开发、微信营销、系统平台开发。C#语言关于面向对象编程的规范,我觉得介于上面两者之间,我的理解是它比较偏向c++,或许是因为跟它的析构函数有关系,像java有较好的内存、垃圾回收机制,C#这方面有没有或者好不好因为我初学也不好说,只能分析和编写一些小代码作为对它的初探。
关于类的声明、析构函数、重载和实例化其实很其他语言没有什么差别,对于“字段、属性和索引器”因为明显感觉到和其他语言存在编写上的差别,所以放上来说一说。
字段是开发中常见的常量或者变量,它是类的一个构成部分,最简单的例子:
string str;
属性有如下定义:
[修饰符][类型][属性名]
{
get{ get访问器}
set{ set访问器}
}
string str; public string Str { get { return str; } set { str = value; } }
在我自己训练的程序里面,value通常都为键盘输入的值,通常我写的为:
p.Str = Console.ReadLine();
通过上面的代码就可以简单地设置属性的值。
索引器:
C#语言支持一种名为索引器的特殊“属性”,能够实现引用数组元素的方式来引用对象
声明格式如下:
[修饰符][类型]this[[参数列表]]
{get{}和set{}}
我们可以定义一个类Coll,在里面设置如下:
public const int MaxNum = 3; private string[] arr; public string this[int index] //定义索引器 { get { return arr[index]; } set { arr[index] = value; } } public Coll() { arr = new string[MaxNum]; //设置数组的长度 }
然后在另一个类中的Main方法中新建类Coll的对象col,
通过col[0]="123"这样就可以设置数组的值
关于类的面向对象特性,这里提及一下关于继承和多肽的概念,这方面的内容和C++的也较为类似:
class Fruit { string name; //定义字段 string color; public Fruit(string str)//定义构造函数为name字段赋值 { name = str; } public string Color //定义属性 { set { color = value; }//为color设置值 } public void Information() { Console.WriteLine("{0} 颜色: {1}", name, color); } } class Apple : Fruit { string name; string color; public Apple(string str): base(str) { name = str; } }
程序中的Apple类虽然没有设置属性Color和方法Information,但因为它继承自Fruit类,自然就有Fruit的属性和方法(这里的说明没有说到关于修饰符的内容)
所以新建的apple对象也可以调用:
apple.Color = "红色"; apple.Information();
类的多态:
子类的实例可以直接赋予基类的对象,并直接通过该对象调用子类的方法。
class People { public virtual void Body() { Console.WriteLine("{0}",this.Name); } } class A : People { public override void Move()//重写方法 { Console.WriteLine("{0}",this.Name); } }
最后,附上根据书上敲的完整实例,通过调试,修改其中一些代码应该也比较好理解:
class Vehicle { string name;//定义字段 public string Name//定义属性为字段赋值 { get { return name; } set { name = value; } } public virtual void Move() { Console.WriteLine("{0}都可以移动", this.Name); } } class Train : Vehicle { string name; public override void Move() { //base.Move(); Console.WriteLine("{0}在铁轨上行驶", this.Name); } } class Car : Vehicle { string name; public override void Move() { Console.WriteLine("{0}在公路上行驶", this.Name); } } class Program { static void Main1(string[] args) { Vehicle verhicle = new Vehicle(); Train train = new Train(); Car car = new Car(); verhicle.Name = "交通工具"; train.Name = "火车"; car.Name = "汽车"; verhicle.Move(); train.Move(); car.Move(); } }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站题目:C#面向对象基础——字段、属性和索引器-创新互联
地址分享:http://cdiso.cn/article/gdodo.html