学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > C# >

第七章 C#面向对象中的类

设置字体:
----------------------------------
我们先来看看“对象”,什么是对象?我们在现实生活中所能看到的一切都可以称为对象 。比如,企业、医院、宠物、植物、人。。。等等。在面向对象编程中,对象往往被当作一个类,类有属 性和行为。我们以医院为例来说,医院有医生,有护士等,在医院可以做CT,B 超等。在面向对象编程中 ,我们定义一个hospital 类,其有属性(医生,护士)和行为(做CT,做B 超)。这就是一个简单的面向 对象编程。其实,我们不光可以把医院做为一个类,我们还可以把医生做为一个类,医生有其属性(年龄,姓名 ,性别等)和其行为(检查病人,开处方,做手术等)。甚至我们可以把儿科医生定义为一个类,同样, 骨科,外科,内科等医生,我们都可以分别定义为一个类,但这些类都具有同样的属性(年龄,姓名,性 别等)甚至行为,难道每个类我们都要依次定义这些属性吗?答案是否定的。

我们可以定义一个医生类,定义这些共有属性和行为。儿科医生,骨科医生等都继承自这个医生类, 这样就具有了医生类的所有属性和行为。这在面向对象编程中被称为继承。我们再来看一个例子。人,有白人,黑人,黄种人等。人有年龄,性别,会吃饭。狗有白毛的狗,有黑色的狗等,狗有年龄 ,性别,会吃饭,咬人。在这种情况下,我们可以把人定义为一个基类(有属性 年龄,性别和行为吃饭等),黑人,
白人,黄 种人都继承自“人”这个类。我们再“狗”定义为一个类(有属性 年龄,性别和行为吃饭,咬人等),白狗,黑狗都继承于这个“狗”类。

在这里,我们可以看到,狗所具有的一些属性在“人”这个类里面已经具有了,我们没有 必要重新在“狗”类中定义的,“狗”类中只需要定义其独特的行为或属性,比如 :咬人。而黑狗,白狗等继承自“人”和“狗”这两个类。这样就不存在重复定义 的问题了。

但在C#和Java 中都不支持多重继承。那怎么办呢?这时候就诞生了一个“接口”的概念。一个类可以实现多个接口。在上例中,可以定义一个“动物”的接口(人也是一种动物嘛),在接口中定义人和狗共有的年龄,性别,吃饭等属性和行为。再定义一个“人”这样的基类,并实现这个接口,然后白人,黑人等类再继承“人”这个基类就可以了。

一、类的概述
类,是创建对象的模板,每个对象都包含数据,并且提供了处理和访问数据的方法。换言之,类,定 义了每个对象,也就是“实例”包含什么数据和功能。比如我们定义一个“医生”类,并且实例化一个。我们看下面的代码:
using System;
namespace xuexuexi.com
{
public class Doctor
{
public Doctor(){}
public Doctor(string name,byte age)
{
this._name=name;
this._age=age;
}
private string _name;
private byte _age;
public string Name
{
get{return this._name;}
set{this._name=value;}
}
public byte Age
{
get{return this._age;}
set{this._age=value; }
}
public string doSth()
{
return "我会给人治病喔~~";
}
public static string doAnth()
{
return "执行的另一个静态方法";
}
}
public class OneDoctor
{
static void Main()
{
Doctor dc=new Doctor();
dc.Name="李四";
dc.Age=25;
Doctor dc2=new Doctor("张三",35);
Console.WriteLine(dc.Name);
Console.WriteLine(dc.Age);
Console.WriteLine(dc2.Name);
Console.WriteLine(dc2.Age);
Console.WriteLine(dc.doSth());
Console.WriteLine(Doctor.doAnth());
}
}
}
在这个例子中,public class Doctor 便是声明了一个类。_name 和_age 是其两个属性。doSth()是其 的一个方法(即对象的行为)。 Doctor dc=new Doctor() 用来实例化了一个Doctor 类,也就类似实例化 了一个对象,产生了一个新医生。Doctor dc2=new Doctor("张三",35);是实例化的另外一个类,也就是 另外一个医生。在Doctor 类中,public Doctor(){} public Doctor(string name,byte age) 这两个方法叫做 构造
函数。是用来初始化类的,在每个类被实例化的时候,会自动调用。
public string Name
{
get{return this._name;}
set{this._name=value;}
}
这段代码是用来设置和获取类的属性的。也就类似java 中的 getName 和 setName 方法。
只是在C#中 这变得更容易了。
----------------------------------
课程列表
重点难点
赞助链接