分享
 
 
 

面向对象程序设计——VB.NET&C# 篇

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

面向对象程序设计

——VB.NET&C# 篇

引言

.NET是一种充分体现面向对象(OO)特征的语言平台,这些特征包括:

名字空间(Namespace)

类(Classes)

对象(Objects)

封装(Encapsulation)

重载(Overloading)

继承(Inheritance)

重写(Overriding)

界面(Interfaces)

多态(Polymorphism)

下面我们一起来逐一了解这些特征的简要意义:

名字空间(NameSpace)

名字空间即使被.NET平台广泛的应用,但其不是真正的OOPS特征,它只不过是各种不同类(Classes)的一个逻辑容器。名字空间下的类名必须是唯一的,名字空间有两个用途——为类提供逻辑组织和避免歧义性。

类(Classes)

类,仅仅是指“模板”或“blue-print”的一种定义。例如,你可以定义一个真实存在的类——Employee,这个类中包含有属性成员(Name, Age...)和行为(CalculateSalary, GoOnLeave...)。

对象(Objects)

类的实例叫做对象。例如,上面提到的Employee类可以包含有三个实例,它们描绘了具体的雇员——John, Bob and Tom。

封装(Encapsulation)

每一个对象(Objects)都是有代表性地分配一些数据或其他什么的。不是所有的数据都暴露在系统的外部,这些可以通过封装来控制。

重载(Overloading)

重载是指方法或函数可以使用相同的名字,但使用不同的参数名。参数的数据类型和个数可以改变。

继承(Inheritance)

继承是指类的延伸。它在任何时候对你的系统发展中的“对象模型”起到重要作用。.NET计划只支持单一的继承关系。

重写(Overriding)

重写是指方法在派生类中用跟父类相同(除了参数以外)的名字。

界面(Interfaces)

界面只不过是无需执行任何代码的类的属性和方法的模型。类使用Implement关键字来执行界面。当一个类通过Implements关键字创建界面的时候,它必须执行所有的属性和方法(虽然这个动作是空的或者是无效的)。

多态(Polymorphism)

多型性是指系统使用相同的名字调用正确的任务的能力。

创建名字空间

创建名字空间使用关键字——Namespace(C#里使用namespace)。下面的例子显示了怎样声明一个名字空间。

[VB.NET]

Namespace MyNamespace

...

End Namespace

[C#]

namespace MyNamespace

{

...

}

注意,一个集合可以有一个或多个名字空间,相反,一个名字空间可以跨越多个集合。你可以像下面例子一样创建名字空间巢。

[VB.NET]

Namespace MyNamespace

Namespace MuSubNamespace

...

End Namespace

End Namespace

[C#]

namespace MyNamespace

{

namespace MySubNamespace

{

...

}

}

如果你是使用VS.NET集成开发环境来创建解决方案,那么请使用默认的名字空间。

创建类

类的创建跟创建名字空间相似。

[VB.NET]

Public Class Class1

...

End Class

[C#]

public class Class1

{

...

}

类通常是一些名字空间的一部分。

创建属性

属性是类的封装数据成员,属性可以是读写、只读和只写。这是一个创建“读写”属性的例子:

[VB.NET]

Public Class Employee

private strName As String

Public Property Name As String

Get

return strName;

End Get

Set(value As String)

strName=value;

End Set

End Property

End Class

[C#]

public class Class1

{

public string Name

{

string strName;

get

{

return strName;

}

set

{

strName=value;

}

}

}

注意:1、VB.NET使用Property关键字声明属性,C#使用这个关键字。

2、Property定义由Get和Set两部分组成,Get部分返回属性的值而Set部分是设置一些private变量。

3、Set设置的值在C#里是通过隐含变量来调用这个值,而在VB.NET里允许你去改变这个值。

创建方法

方法描绘对象的行为。在VB.NET的FUNCTION和SUB块可以想方法一样被集体调用,在C#中任何事情都是函数。

[VB.NET]

Public Sub CalculateSalary()

...

End Sub

[C#]

public void CalculateSalary()

{

...

}

创建重载

方法重载是指调用同一方法名称使用不同的数据类型和它们的次序。下面的例子清晰的演示方法重载的创建:

[VB.NET]

Public Sub CalculateSalary()

...

End Sub

Public Sub CalculateSalary(month as Integer)

...

End Sub

[C#]

public void CalculateSalary()

{

...

}

public void CalculateSalary(int month)

{

...

}

注:使用VB.NET你也可以使用任意的参数去完成相似的功能,然而,微软推荐使用重载的方法。

继承

继承是延伸已有的类的一种能力。.NET允许单一继承而不象C++那样允许并联的继承,这就意味着你在任何某一时刻只能从一个单一的类那里继承。

[VB.NET]

Public Class Manager

Inherits Employee

...

End Class

[C#]

public class Manager : Employee

{

...

}

在上面的例子中,我们建立了一个从父类Employee继承的派生类Manager象你能够猜到Manager是父类Employee的具体的实行一样。VB.NET使用Inherits关键字表示父类而在C#代码中使用“:”操作符。

方法重写

为了在子类里重写方法,必须在父类中的方法前标识Overridable关键字(VB.NET)virtual关键字(C#)。

[VB.NET]

Public Overridable Function CalculateSalary() As Integer

...

End Function

[C#]

public virtual int CalculateSalary()

{

...

}

然后,在子类中你可以创建一个方法使用相同的名字和指定重写的基类方法。

[VB.NET]

Public Overrides Function CalculateSalary() As Integer

...

End Function

[C#]

public override int CalculateSalary()

{

...

}

注意:如果你在子类中没有提供关键字Overrides (VB.NET) 或 override (C#)的话,那么,编译器会给出一个“you are hiding a base class member”的警告提示。当然了,你也可以输入Shadows (VB.NET)或new (C#)关键字来隐藏基类成员。

创建界面

象类是模板的生存期一样,界面可以是类的模板,相同地,他们是在对象模型里。

[VB.NET]

Public Interface IEmployee

Property EmployeeID() As Integer

Property Name() As String

Property Age() As Integer

Function CalculateSalary() As Integer

End Interface

[C#]

public interface IEmployee

{

int EmployeeID

{

get;

}

string Name

{

get;

set;

}

int Age

{

get;

set;

}

int CalculateSalary();

}

多态

下面一段作为讲解的例子:

[VB.NET]

Dim emp As Employee

emp = New Clerk()

Console.WriteLine

("Clerk Salary :{0}", emp.CalculateSalary())

emp = New Manager()

Console.WriteLine

("Manager Salary :{0}", emp.CalculateSalary())

[C#]

Employee emp;

emp=new Clerk();

Console.WriteLine

("Clerk Salary :{0}",emp.CalculateSalary());

emp=new Manager();

Console.WriteLine

("Manager Salary :{0}",emp.CalculateSalary());

在例子中,我们定义了一个Employee类型的变量。父类类型的变量能够指向任何其子类的实例。首先,我们让它指向一个叫做Clerk类的实例,然后,我们再让它指向一个叫做Manager类的实例。依靠子类型,父类型(这里的type Employee)甚至可以正确的调用CalculateSalary()方法。通过inheritance polymorphism和interface polymorphism都可以可以完成上面的动作。

[VB.NET]

Dim emp As IEmployee

emp = New Clerk()

Console.WriteLine

("Clerk Salary :{0}", emp.CalculateSalary())

emp = New Manager()

Console.WriteLine

("Manager Salary :{0}", emp.CalculateSalary())

[C#]

IEmployee emp;

emp=new Clerk();

Console.WriteLine

("Clerk Salary :{0}",emp.CalculateSalary());

emp=new Manager();

Console.WriteLine

("Manager Salary :{0}",emp.CalculateSalary());

总结:

通过这篇文章我们可以了解许多VB.NET和C#的OO(面向对象)特征,在VB.NET和C#语言编程的领域,你必须有了解面向对象语言特征和使用关键字的编程思想。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有