C#之:面向对象高级概念PPT教学课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
而且由于没有方法体,小括号后面就直接以分号结束。
下面我们改写前面的哺乳动物的例子:
注意事项:具有抽象方法的类必须是抽象类,而抽象类 是无法实例化的。派生自抽象类的子类必须实现基类的 抽象方法,如果不想实现的话,派生类也必须声明为抽 象的。
2020/12/12
微软IT学院 12
密封类
跟抽象概念相反,密封类则坚决不允许有派生类。 如果将前面的Mammal改写为:
}
关于访问级别修饰符:protected 的用法。 举例说明
2020/12/12
微软IT学院 10
抽象类(abstract class)
在讲解抽象类概念之前,首先将前面的继承与多态概 念复习一下,重新写一下关于继承与多态的代码,这里 仍以哺乳动物为例。(课堂练习)
Mammal的每个子类都重写了Howl的方法,实现了自己 独特的叫声,但是这里并没有硬性的要求,子类完全可 以不用重写Howl方法。
//派生类Dog将继承基类Mammal所有的成员。
}2020/12/12
微软IT学院 6
多态
继承有两个功能强大的方面。第一个就是代码重用, 通过前面的例子,我们可以看到派生类可以复用基类的 成员或者方法。
第二个方面则更加的强大,这就是多态性。多态性 指的是可以使用一种类型的多种形式,而不考虑细节。
public sealed class Mammal(){} 这时候程序就会报错,因为密封类不允许有其他类派生 自它。
2020/12/12
微软IT学院 13
万类之根:Object
所有的C#类,无论何种类型,都可以看成最终是从 System.Object派生而来的。
可以将C#类看成一个倒树:树根则是Object
(可以将new翻译成新的) 2020/12/12
微软IT学院 15
UML图形建模描述类
2020/12/12
微软IT学院 16
UML图形建模描述类
2020/12/12
微软IT学院 17
PPT教学课件
谢谢观看
Thank You For Watching
2020/12/12
微软IT学院 18
微IT学院 8
创建多态方法
在基类(父类)中使用virtual 关键字 在派生类中使用override关键字,来重写父类中的用 virtual声明的方法。 方法重写与方法重载的区别。
举例说明:
2020/12/12
微软IT学院 9
调用基类的构造方法
public Dog(string name):base(name) {
Object既然是万类之根,那么它有哪些需要重写的方法
呢?
常见方法
作用
Equals()
比较两个对象是否相同
GetHashCdoe()
获取对象的散列码
GetType()
获取对象的类型
ToString()
提供对象的字符串表示
2020/12/12
微软IT学院 14
关于protected和new
1、protected 访问级别
微软IT学院 5
继承与实现继承
继承:在C#中,具体化的关系通常是用继承 实现的。对于前面的例子,我们可以说:Dog继 承自Mammal(狗类继承自哺乳动物)或者说 Dog派生自Mammal。那Dog就是具体化了 Mammal类。
实现继承:
public class Dog : Mammal{
举例说明
C#对象篇
面向对象的高级应用
IT
2020/12/12
微软IT学院 1
内容提要
一般化与具体化 继承以及实现继承 多态、多态类型、多态方法 调用基类的构造方法 protected 访问修饰符、new操作符 抽象、抽象方法、密封 万物之根:Object
2020/12/12
微软IT学院 2
一般化与具体化
如果需要子类必须实现基类的方法,就应该指定该方法 为抽象(abstract)的。如果某个类包含抽象方法,那么该 类也必须声明为抽象的。
2020/12/12
微软IT学院 11
抽象方法
抽象方法没有实现,只有名称和参数,如果我们将基 类中的Howl方法改为抽象方法,必须遵循如下写法:
public abstract void Howl();
微软IT学院 3
一般化与具体化
Mammal
一般类
Dog
Cat
具体类
我们说:Dog is a Mammal
2020/12/12
微软IT学院 4
一般化与具体化
进一步延伸出更复杂的层次关系
Animal
Mammal
Bird
Fish
Dog
Cat
2020/12/12
Eagle
Sparrow
GoldFish
Shark
一个类中的字段或者方法、属性使用了protected修 饰符,则该字段或方法只能用在本类或者该类的派生类 中。因此,protected修饰的字段受“家族”保护。
2、new操作符 在继承中的用法
有时候我们子类中的方法和父类的虚方法相同, 但
是它又不想受到父类的影响,也就是不想重写父类,可 以这样声明:public new void Howl()。这样子类就可以 覆盖父类的方法了,就算父类方法有所改变也不影响。
类及其实例并不是单独存在的,它们存在于各种 相互依赖的关系网络之中,如同实际社会的动物 生活在各种关系以及类别当中一样。
“是” (is-a)关系就是一种具体化。当我们说 狗是一种哺乳动物时,指的狗就是某一种具体的 哺乳动物。
狗和猫是哺乳动物的具体化,而哺乳动物是狗和 猫的一般化。
2020/12/12
举例子: 1、来根烟 2、今天中午想吃鱼,来条鱼
2020/12/12
微软IT学院 7
创建多态类型
具有继承关系的基类就是一种多态类型。比如我想 听到动物的叫声,我并不关心具体什么动物在叫,我只 要享受听声音的过程,当然我希望能够听到不同的叫声, 那样才有不一样的感觉!
举例说明:
2020/12/12
下面我们改写前面的哺乳动物的例子:
注意事项:具有抽象方法的类必须是抽象类,而抽象类 是无法实例化的。派生自抽象类的子类必须实现基类的 抽象方法,如果不想实现的话,派生类也必须声明为抽 象的。
2020/12/12
微软IT学院 12
密封类
跟抽象概念相反,密封类则坚决不允许有派生类。 如果将前面的Mammal改写为:
}
关于访问级别修饰符:protected 的用法。 举例说明
2020/12/12
微软IT学院 10
抽象类(abstract class)
在讲解抽象类概念之前,首先将前面的继承与多态概 念复习一下,重新写一下关于继承与多态的代码,这里 仍以哺乳动物为例。(课堂练习)
Mammal的每个子类都重写了Howl的方法,实现了自己 独特的叫声,但是这里并没有硬性的要求,子类完全可 以不用重写Howl方法。
//派生类Dog将继承基类Mammal所有的成员。
}2020/12/12
微软IT学院 6
多态
继承有两个功能强大的方面。第一个就是代码重用, 通过前面的例子,我们可以看到派生类可以复用基类的 成员或者方法。
第二个方面则更加的强大,这就是多态性。多态性 指的是可以使用一种类型的多种形式,而不考虑细节。
public sealed class Mammal(){} 这时候程序就会报错,因为密封类不允许有其他类派生 自它。
2020/12/12
微软IT学院 13
万类之根:Object
所有的C#类,无论何种类型,都可以看成最终是从 System.Object派生而来的。
可以将C#类看成一个倒树:树根则是Object
(可以将new翻译成新的) 2020/12/12
微软IT学院 15
UML图形建模描述类
2020/12/12
微软IT学院 16
UML图形建模描述类
2020/12/12
微软IT学院 17
PPT教学课件
谢谢观看
Thank You For Watching
2020/12/12
微软IT学院 18
微IT学院 8
创建多态方法
在基类(父类)中使用virtual 关键字 在派生类中使用override关键字,来重写父类中的用 virtual声明的方法。 方法重写与方法重载的区别。
举例说明:
2020/12/12
微软IT学院 9
调用基类的构造方法
public Dog(string name):base(name) {
Object既然是万类之根,那么它有哪些需要重写的方法
呢?
常见方法
作用
Equals()
比较两个对象是否相同
GetHashCdoe()
获取对象的散列码
GetType()
获取对象的类型
ToString()
提供对象的字符串表示
2020/12/12
微软IT学院 14
关于protected和new
1、protected 访问级别
微软IT学院 5
继承与实现继承
继承:在C#中,具体化的关系通常是用继承 实现的。对于前面的例子,我们可以说:Dog继 承自Mammal(狗类继承自哺乳动物)或者说 Dog派生自Mammal。那Dog就是具体化了 Mammal类。
实现继承:
public class Dog : Mammal{
举例说明
C#对象篇
面向对象的高级应用
IT
2020/12/12
微软IT学院 1
内容提要
一般化与具体化 继承以及实现继承 多态、多态类型、多态方法 调用基类的构造方法 protected 访问修饰符、new操作符 抽象、抽象方法、密封 万物之根:Object
2020/12/12
微软IT学院 2
一般化与具体化
如果需要子类必须实现基类的方法,就应该指定该方法 为抽象(abstract)的。如果某个类包含抽象方法,那么该 类也必须声明为抽象的。
2020/12/12
微软IT学院 11
抽象方法
抽象方法没有实现,只有名称和参数,如果我们将基 类中的Howl方法改为抽象方法,必须遵循如下写法:
public abstract void Howl();
微软IT学院 3
一般化与具体化
Mammal
一般类
Dog
Cat
具体类
我们说:Dog is a Mammal
2020/12/12
微软IT学院 4
一般化与具体化
进一步延伸出更复杂的层次关系
Animal
Mammal
Bird
Fish
Dog
Cat
2020/12/12
Eagle
Sparrow
GoldFish
Shark
一个类中的字段或者方法、属性使用了protected修 饰符,则该字段或方法只能用在本类或者该类的派生类 中。因此,protected修饰的字段受“家族”保护。
2、new操作符 在继承中的用法
有时候我们子类中的方法和父类的虚方法相同, 但
是它又不想受到父类的影响,也就是不想重写父类,可 以这样声明:public new void Howl()。这样子类就可以 覆盖父类的方法了,就算父类方法有所改变也不影响。
类及其实例并不是单独存在的,它们存在于各种 相互依赖的关系网络之中,如同实际社会的动物 生活在各种关系以及类别当中一样。
“是” (is-a)关系就是一种具体化。当我们说 狗是一种哺乳动物时,指的狗就是某一种具体的 哺乳动物。
狗和猫是哺乳动物的具体化,而哺乳动物是狗和 猫的一般化。
2020/12/12
举例子: 1、来根烟 2、今天中午想吃鱼,来条鱼
2020/12/12
微软IT学院 7
创建多态类型
具有继承关系的基类就是一种多态类型。比如我想 听到动物的叫声,我并不关心具体什么动物在叫,我只 要享受听声音的过程,当然我希望能够听到不同的叫声, 那样才有不一样的感觉!
举例说明:
2020/12/12