关于面向对象编程,在很多语言里面都出现过,最常用的如java和c++,
C#语言关于面向对象编程的规范,我觉得介于上面两者之间,我的理解是它比较偏向c++,或许是因为跟它的析构函数有关系,像java有较好的内存、垃圾回收机制,C#这方面有没有或者好不好因为我初学也不好说,只能分析和编写一些小代码作为对它的初探。
关于类的声明、析构函数、重载和实例化其实很其他语言没有什么差别,对于“字段、属性和索引器”因为明显感觉到和其他语言存在编写上的差别,所以放上来说一说。
字段是开发中常见的常量或者变量,它是类的一个构成部分,最简单的例子:
string str;
[修饰符][类型][属性名]
{
get{ get访问器}
set{ set访问器}
}
string str;
public string Str
{
get
{
return str;
}
set
{
str = 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对象也可以调用:
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();
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。