C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章

上传人:E**** 文档编号:89188151 上传时间:2019-05-20 格式:PPT 页数:59 大小:366KB
返回 下载 相关 举报
C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章_第1页
第1页 / 共59页
C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章_第2页
第2页 / 共59页
C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章_第3页
第3页 / 共59页
C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章_第4页
第4页 / 共59页
C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章》由会员分享,可在线阅读,更多相关《C#程序设计实用教程 教学课件 ppt 作者 李正夫 第05章(59页珍藏版)》请在金锄头文库上搜索。

1、第5章 面向对象提高,2019/5/21,2,本章学习要点,5.1面向对象三大特征 5.1.1封装 5.1.2继承 5.1.3多态性 5.2特殊类与接口 5.2.1抽象类 5.2.2密封类 5.2.3接口 5.3 this和base关键字 5.4异常处理,2019/5/21,3,5.1 面向对象三大特征 封装、继承与多态性是面向对象程序设计的3大原则,封装用于隐藏调用者不需要了解的信息,继承则简化了类的设计,多态性是指在类中为名称相同的方法提供不同实现方式的能力。 5.1.1封装 在面向对象编程中,封装是指把数据和处理这些数据的代码封装在一个类中,然后通过提供相应的属性和方法提供调用者使用。通

2、过隐藏调用者不需要知道的信息,可以让调用者只关心对象中对其有用的相关内容。封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。,2019/5/21,4,5.1.2 继承 1、什么是继承 继承性是从现有的类中派生出新类的功能,它能分析多态性的细微差别,并允许创建类层次结构,使用继承可以创建一个定义了多个相关项目共有特性的通用类。继承是面向对象程序设计中一个很重要的特性,它是关于一个类怎么从另一个类中共享特性和行为的术语。 派生类能够继承基类的方法、特性等,但继承得到的成员也受作用域的限制,即使派

3、生类继承得到基类成员,也可能无法访问。对于作用域和继承的关系,,2019/5/21,5,class 派生类:基类 或 class 子类:父类 继承指一个派生类或子类能够直接获得基类或父类已有的属性和方法,儿不需要重复定义。继承具有传递性,但C#只支持单继承,即一个类最多只允许从一个父类中派生,也就是说只能有一个父类,反之,一个类可以派生多个子类,即可以有多个子类(密封类除外)。 public class Baseclass public void Show() Console.WriteLine(“基类内容“); ,2019/5/21,6,public class Derivedclass :

4、 Baseclass public void Shownew() Console.WriteLine(“派生类内容“); class Example static void Main(string args) Derivedclass aclass = new Derivedclass(); aclass.Show();/调用父类中方法,显示输出“基类内容” aclass.Shownew();/调用父类中方法,显示输出“派生类内容” Console.ReadLine(); 下列代码是使用继承的又一个实例:,2019/5/21,7,public class ParentClass public

5、ParentClass() Console.WriteLine(“Parent Constructor.“); public void print() Console.WriteLine(“Im a Parent Class.“); public class ChildClass : ParentClass public ChildClass() Console.WriteLine(“Child Constructor.“); public static void Main() ChildClass child = new ChildClass(); child.print(); ,2019/

6、5/21,8,上例中演示了两个类的用法。上面的一个类名为ParentClass, main函数中用到的类名为ChildClass。要做的是创建一个使用父类ParentClass现有代码的子类ChildClass。 1)首先必须说明ParentClass是ChildClass的基类。 这是通过在ChildClass类中作出如下说明来完成的:“public class ChildClass : ParentClass“。在派生类标识符后面,用分号“:“ 来表明后面的标识符是基类。C#仅支持单一继承。因此,你只能指定一个基类。,2019/5/21,9,2)ChildClass的功能几乎等同于Pare

7、ntClass。 因此,也可以说ChildClass “就是“ ParentClass。在ChildClass 的Main()方法中,调用print() 方法的结果,就验证这一点。该子类并没有自己的print()方法,它使用了ParentClass中的 print()方法。在输出结果中的第三行可以得到验证。 3)基类在派生类初始化之前自动进行初始化。 注意到例子中的输出结果。ParentClass 类的构造函数在ChildClass的构造函数之前执行。,2019/5/21,10,作用域 类中的实例变量有三种声明方式:public、protect和private。它们来控制访问成员的权限,继承类

8、不会超越private访问的限制。尽管一个派生类拥有其基类的所有成员,但它依然受到这三种声明方式的限制。 C#中派生类无权访问其基类的private成员,但可以访问其protect成员。派生类和外部代码都可以访问public成员。下列代码中说明类、子类的作用域的应用。 public class Baseclass private int priv; protect int prot; public void Show() priv=20; prot=30; Console.WriteLine(“private=0 protect=1“, priv, prot); Console.WriteLi

9、ne(“基类内容“); ,2019/5/21,11,public class Derivedclass : Baseclass public void Shownew() priv=40;/错!在父类中priv的访问修饰符是private,在子类中是不可以访问的。 prot=50;/ 在父类中prot的访问修饰符是protect,在子类中是可以访问的。 Console.WriteLine(“派生类内容“); class Program static void Main(string args) Derivedclass child = new Derivedclass(); child.Sho

10、w(); child.Shownew(); ,2019/5/21,12,public class subject public string subjectID; public string subjectName; public class student : subject public string studentID; public string studentName; class Program static void Main(string args) student s1 = new student(); s1.subjectID = “002114“; s1.subjectN

11、ame = “生物系“; s1.studentID = “077405“; s1.studentName = “张大鸣“; Console.WriteLine(“专业编号:“ + s1.subjectID + “ 专业名称:“ + s1.subjectName); Console.WriteLine(“学生编号:“ + s1.studentID + “学生姓名:“ + s1.studentName); Console.ReadKey(); ,2019/5/21,13,继承与构造函数 C#中通过base来实现对父类成员的访问,base用来引用当前对象的父类,其访问方式有三种: 1)访问父类的成员

12、变量 如:base.variable; 2)调用父类中的方法 如:base.method(paramlist); 3)调用父类的构造函数 如:子类的构造函数(paramlist):base(paramlist); 在一个派生类中的构造函数可以显式调用基类的构造函数。这对于调用基类参数化的构造函数尤其有用。基类的构造函数被派生类采用一个构造函数初始值设定项列表来调用。初始值设定项列表只能附加在派生类的实例构造函数上。,2019/5/21,14,基类成员的初始化工作由基类的构造函数完成,而派生类的初始化工作由派生类的构造函数完成。当创建一个派生类的对象时,首先调用基类的构造函数,然后调用派生类的构

13、造函数,分别完成各自成员的初始化。 下列代码定义了一个基类BaseClass及一个派生类DerivedClass,在派生类DerivedClass中的构造函数中定义调用基类构造函数。代码如下:,2019/5/21,15,class BaseClass public BaseClass() Console.WriteLine(“基类的无参数构造函数! “); public BaseClass(int x) Console.WriteLine(“基类的有参数构造函数!参数是0 “, x.ToString(); public void Show() Console.WriteLine(“基类内容“)

14、; ,2019/5/21,16,class DerivedClass : BaseClass public DerivedClass(int y): base(y) Console.WriteLine(“派生类的构造函数!参数是0“,y.ToString()“); public void Shownew() Console.WriteLine(“派生类内容“); class Program static void Main(string args) DerivedClass aclass = new DerivedClass(5); aclass.Show(); aclass.Shownew(

15、); Console.ReadLine(); ,2019/5/21,17,从程序运行结果可以看出,当实例化创建派生类对象时首先通过派生类的构造函数调用的基类的构造函数,并传递参数,然后调用派生类构造函数。,2019/5/21,18,public class subject /定义一个基类subject public string name() return “理学“; public class student : subject /定义一个派生类student new public string name() return “张三“; class Program static void Main(string args) student s1 = new student(); string name = s1.name(); Console.WriteLine(“学生姓名:“ + name); Console.ReadKey(); ,2019/5/21,19,public class subject /定义一个基类subject public virtual void name() Console.WriteLine(“基类“); public class student : subject /定义一个派生类studen

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号