第九章(4)_类的定义与使用_类层次结构.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类层次结构
• 生活中有很多关系可以用类层次结构来 表示,如:
万物皆对象,都有共同祖先
• 在 C# 中,所有对象都有一个类层次结构, 包括最简单的内置类型,如int、float、 string等,它们都有一个统一的基类,即 System.Object(或object)。
所有对象的基类:Object
把类放在不同文件中
• 在VS2008中,可以把类写在不同的文件中 • 一般情况下,我们遵循如下规则:
– 每个类放在一个文件中。 – 文件的名子就是类的名字。
• 在不同文件中的类可自由的使用,只要它们 处于同一个名字空间下。
把类放在不同项目中
• 除了在项目中,把类放在不同的文件之外, 还可以把它们放在完全不同的项目中,如果 一个项目什么都不包含,只包含类(以及其 它相关的类的定义,但没有入口点),该项 目就称为类库项目。 • 类库项目编译为.dll程序集,在其它项目中添 加类库项目的引用,就可以访问它的内容了。 • 通过引用其他程序集,实现了代码的复用, 也便于团队进行分工合作开发。
• 当我们使用‘==’运算符比较两个对象是否相 等时,实际上就是调用了Object类的Equals方 法来进行比较的,以下代码功能相同:
static void Main(string[] args) { string theStr = Console.ReadLine(); static void Main(string[] args) { string theStr = Console.ReadLine();
第九章 类的定义与使用
——类层次结构
类层次结构
• 利用继承,可以非常方便的复用已有类 的所有公有属性和方法,并加入一些新 的属性和行为,产生出一个新的子类。 • 在子类的基础上,我们还可以继续进行 继承,以产生出功能更加强大的类。 • 我们可以一直这样继承下去,产生出一 个类似树状的层次结构,我们称其为类 层次结构。
• System.Object类是一切类型的基类,包 括 C# 中的内置类型和用户自己创建的新 类,用户创建的新类将自动的从Object类 继承。
– 这两者是等价的:
class MyClass : object { // Class define. } class MyClass { // Class define. }
所有对象的基类:Object
• Ojbect数组示例:
static void Main(string[] args) { object[] theObjes = new ob 10; theObjs[1] = 3.14; theObjs[2] = “The String”; theObjs[3] = SomeEnum.SomVal; theObjs[4] = customClassObj;
if (theStr == “ok”) { // Code in here. }
} }
if (theStr.Equals(“ok”)) { // Code in here. }
所有对象的基类:Object
• 为什么要这样?
– 在Object类中Equals(object)是定义为Virtual的, 可以进行重写,重新定义判断对象是否相等 的功能。 – 在 C# 中,由于所有类型都是从Object类继承 的,所以,可以用Object类型的变量存储任意 类型的对象。这样的话,就可以定义这样的 数组,让它存放任意类型的数据。
作业
• 请将你的项目分为多个项目组成,一个 项目为控制台主程序项目,以及一个或 多个类库项目。
所有对象的基类:Object
• 即然Object是一切类型的基类,所以可以用 Object来存储任意类型的数据,看如下代码:
static void Main(string[] args) { int theInteger = 10; float theFloat = 3.14; string theString = “The string”; object theObj = theInteger; theObj = theFloat; theObj = theString; Console.WriteLine(theObj); }
所有对象的基类:Object
• Object 中有些什么内容?(Pg169 表9-2)
– – – – Equals ReferenceEqual ToString GetType 两个对象是否相等 两个对象是否为同一个对象 返回对象值的字符串表示 返回代表对象类型的对象
所有对象的基类:Object
所有对象的基类:Object
• GetType()在Object类中的定义是:获得对象的类型, 返回:System.Type类型的结果,可以和typeof运算 符的计算结果进行比较,用于判断对象的类型
Animal cow = new Cow("小牛贝贝"); Console.WriteLine(cow.GetType() == typeof(Cow));
}
所有对象的基类:Object
• ToString() 在Object类中的定义是Virtual的 ,通常 可以在新定义的类中进行重写 • 默认的ToString()实现了什么功能?
思考:为什么可以Console.WriteLine(整型变量)? 可不可以实现Console.WriteLine(cow)
相关文档
最新文档