c程序设计及应用教程whut 面向对象的高级编程.pptxVIP

  • 1
  • 0
  • 约1.05万字
  • 约 40页
  • 2022-11-02 发布于上海
  • 举报

c程序设计及应用教程whut 面向对象的高级编程.pptx

会计学 1 C程序设计及应用教程WHUT 面向对象的高级编程 5.1 类的继承与多态性 封装:隐藏调用者不需要了解的信息。 继承:简化类的设计,为系统维护提供便利。 多态:类为名称相同的方法提供不同实现方式的能力。 第1页/共40页 5.1.1 基类和扩充类 继承表示现实世界中遗传关系的直接模拟。 它表示类之间的内在联系以及对属性和操作的共享。 第2页/共40页 5.1.1 基类和扩充类 OOL中继承的两种实现方式:实现继承和接口继承。 被继承的类叫基类/父类 从基类继承来的类叫扩充类/派生类/子类 实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。在实现继承中,派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。例如:System. Windows.Forms.TextBox和System.Windows.Forms.ListBox派生于System.Windows.Forms.Control ,并重写了函数,或提供了新的函数,以实现特定类型的控件。 接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。 C#中,实现继承只允许单一继承 ,接口可实现多重继承。因为System.Object是一个公共的基类,所以每个C#类(除了Object类之外)都有一个基类,还可以有任意多个基接口。 第3页/共40页 5.1.1 基类和扩充类 声明扩充类的语法: [访问修饰符] class 扩充类名称:基类名称 { //程序代码 } 扩充类继承了所有定义在基类中数据的定义和方法。但是扩充类不继承基类的构造函数。 注意: C#不支持私有继承,因此基类名上没有public或private限定符 如果在类定义中没有指定基类,C#编译器就假定System.Object是基类。 第4页/共40页 5.1.1 基类和扩充类 【例5-1】基类和扩充类的定义及用法。 第5页/共40页 5.1.2 多态性 多态性是指对象可以表示多个类型的能力。 在C#中,多态性的定义是:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。 3种实现多态性的方法: 通过继承实现多态性。 通过抽象类实现多态性。 通过接口实现多态性。 第6页/共40页 5.1.2 多态性 1、虚拟方法 在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符virtual表明: public virtual void myMethod() //虚拟方法 { ……//程序代码 } 扩充类则用override重写: public override void myMethod() { ……//程序代码 } 第7页/共40页 5.1.2 多态(续) 使用虚拟方法和重写方法时,要注意下面几个方面: 虚拟方法不能声明为静态的。 virtual不能和private一起使用。 重写方法的名称、参数个数、类型以及返回值都必须和虚拟方法的一致。 第8页/共40页 5.1.2 多态(续) 【例5-2】重写基类的方法。 第9页/共40页 5.1.2 多态(续) 2、隐藏基类的方法 在扩充类中,可以使用new关键字来隐藏基类的方法,即使用一个完全不同的方法取代旧的方法。 与方法重写不同的是,使用new关键字时并不要求基类中的方法声明为virtual,只要在扩充类的方法前声明为new,就可以隐藏基类的方法。 class MyDerivedClass : HisBaseClass { public new int MyGroovyMethod() { // some groovy implementation return 0; } } 【例5-3】 第10页/共40页 5.1.2 多态(续) 3.在扩充类直接调用基类的方法 使用base关键字 class CustomerAccount { public virtual decimal CalculatePrice() { // implementation return 0.0M; } }   class GoldAccount : CustomerAccount { public override decimal CalculatePrice() { return base.CalculatePrice() * 0.9M; } } 第11页/共40页 5.1.3 抽象类 使用abstract修饰符。 抽象类只能做基类。 抽象类与非抽象类的区别: 第一是抽象类不能直接被实例化,只能在扩充类中通

文档评论(0)

1亿VIP精品文档

相关文档