第6章 面向对象编程进阶.ppt
《第6章 面向对象编程进阶.ppt》由会员分享,可在线阅读,更多相关《第6章 面向对象编程进阶.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6章章 面向对象编程进阶面向对象编程进阶本章要点本章要点本章要点本章要点通过本章的学习,使读者:通过本章的学习,使读者:通过本章的学习,使读者:通过本章的学习,使读者:理理理理解解解解基基基基类类类类和和和和派派派派生生生生类类类类的的的的概概概概念念念念,理理理理解解解解继继继继承承承承是是是是如如如如何何何何提提提提高高高高软软软软件件件件可可可可重重重重用用用用性的性的性的性的 熟练掌握派生类的定义方法和应用熟练掌握派生类的定义方法和应用熟练掌握派生类的定义方法和应用熟练掌握派生类的定义方法和应用 掌握接口概念和实现方法,能够用接口技术实现多继承功能掌握接口概念和实现方法,能够用
2、接口技术实现多继承功能掌握接口概念和实现方法,能够用接口技术实现多继承功能掌握接口概念和实现方法,能够用接口技术实现多继承功能 了解委托和事件的概念、声明方法和应用了解委托和事件的概念、声明方法和应用了解委托和事件的概念、声明方法和应用了解委托和事件的概念、声明方法和应用 了解并掌握异常处理方法了解并掌握异常处理方法了解并掌握异常处理方法了解并掌握异常处理方法 6.1继承与派生的概念继承与派生的概念6.1.1继承继承继继承承允允许许在在已已有有类类的的基基础础上上创创建建新新的的类类,新新类类可可以以从从继继承承允允许许在在已已有有类类的的基基础础上上创创建建新新的的类类,新新类类可可以以从从
3、一一个个或或多多个个既既有有类类中中继继承承函函数数和和数数据据,而而且且可可以以加加入入一一个个或或多多个个既既有有类类中中继继承承函函数数和和数数据据,而而且且可可以以加加入入新新的的函函数数和和数数据据新新的的函函数数和和数数据据 6.1.2派生派生 由已存在的类派生出的新类称为派生类,又称为子由已存在的类派生出的新类称为派生类,又称为子由已存在的类派生出的新类称为派生类,又称为子由已存在的类派生出的新类称为派生类,又称为子类。类。类。类。在在在在C+C+语言中,一个派生类可以从一个基类派生,语言中,一个派生类可以从一个基类派生,语言中,一个派生类可以从一个基类派生,语言中,一个派生类可
4、以从一个基类派生,也可以从多个基派生。但也可以从多个基派生。但也可以从多个基派生。但也可以从多个基派生。但C#C#不支持多基派生,只支持不支持多基派生,只支持不支持多基派生,只支持不支持多基派生,只支持单基派生。从一个基类派生的继承称为单继承;单基派生。从一个基类派生的继承称为单继承;单基派生。从一个基类派生的继承称为单继承;单基派生。从一个基类派生的继承称为单继承;图图图图6-16-1类之间的继承与派生关系类之间的继承与派生关系类之间的继承与派生关系类之间的继承与派生关系B1、B2的基类A的派生类C1、C2的基类A的派生类(单继承)C3的基B2的派生类(单继承)B1的派生类AB1B2C1C2
5、C36.2类的继承类的继承6.2.1 6.2.1 基类与派生类基类与派生类 在在在在C#C#中,派生类的语法格式如下:中,派生类的语法格式如下:中,派生类的语法格式如下:中,派生类的语法格式如下:class class class class 子类名称:父类名子类名称:父类名子类名称:父类名子类名称:父类名 类的主体类的主体类的主体类的主体 【例例例例6-16-1】创建一个一般学生类创建一个一般学生类创建一个一般学生类创建一个一般学生类Student,Student,Student,Student,然后创建然后创建然后创建然后创建StudentStudentStudentStudent类的子类
6、类的子类类的子类类的子类 大学生类大学生类大学生类大学生类CStudentCStudentCStudentCStudent,体会体会体会体会成员变量和成员方法的继承。成员变量和成员方法的继承。成员变量和成员方法的继承。成员变量和成员方法的继承。class Student /class Student /class Student /class Student /定义一般学生类,父类定义一般学生类,父类定义一般学生类,父类定义一般学生类,父类 public static string public static string public static string public static
7、string sClassNamesClassNamesClassNamesClassName=软件一班软件一班软件一班软件一班;/;/;/;/静态字段静态字段静态字段静态字段 public string public string public string public string SNameSNameSNameSName=王丽王丽王丽王丽;/;/;/;/公有字段公有字段公有字段公有字段 private private private private intintintint Age=21;/Age=21;/Age=21;/Age=21;/私有字段,不被继承私有字段,不被继承私有字段,不
8、被继承私有字段,不被继承 protected string Sex=protected string Sex=protected string Sex=protected string Sex=女女女女;/;/;/;/保护成员变量保护成员变量保护成员变量保护成员变量 public void public void public void public void WriteAgeWriteAgeWriteAgeWriteAge()/()/()/()/公有成员方法公有成员方法公有成员方法公有成员方法 Console.WriteLine(this.AgeConsole.WriteLine(this.
9、AgeConsole.WriteLine(this.AgeConsole.WriteLine(this.Age););););private void private void private void private void WriteSNameWriteSNameWriteSNameWriteSName()/()/()/()/私有成员方法,不被继承私有成员方法,不被继承私有成员方法,不被继承私有成员方法,不被继承 Console.WriteLine(SNameConsole.WriteLine(SNameConsole.WriteLine(SNameConsole.WriteLine(S
10、Name););););StudentStudentclass class class class CStudentCStudentCStudentCStudent:Student /:Student /:Student /:Student /定义大学生类,子类定义大学生类,子类定义大学生类,子类定义大学生类,子类 private string Department;/private string Department;/private string Department;/private string Department;/定义私有成员变量定义私有成员变量定义私有成员变量定义私有成员变量
11、public public public public CStudent(stringCStudent(stringCStudent(stringCStudent(string _Department,string _ _Department,string _ _Department,string _ _Department,string _SNameSNameSNameSName,string _Sex),string _Sex),string _Sex),string _Sex)Department=_Department;Department=_Department;Department
12、=_Department;Department=_Department;SNameSNameSNameSName=_=_=_=_SNameSNameSNameSName;Sex=_Sex;Sex=_Sex;Sex=_Sex;Sex=_Sex;/定义公有成员方法,成员变量定义公有成员方法,成员变量定义公有成员方法,成员变量定义公有成员方法,成员变量SName,Sex,sClassNameSName,Sex,sClassNameSName,Sex,sClassNameSName,Sex,sClassName由父类继承而来由父类继承而来由父类继承而来由父类继承而来 public void publi
13、c void public void public void WriteCStudentInfoWriteCStudentInfoWriteCStudentInfoWriteCStudentInfo()()()()Console.Write(0,1,2,3,Console.Write(0,1,2,3,Console.Write(0,1,2,3,Console.Write(0,1,2,3,SNameSNameSNameSName,Sex,Department,Sex,Department,Sex,Department,Sex,Department,sClassNamesClassNamesCla
14、ssNamesClassName););););/此成员方法来自父类此成员方法来自父类此成员方法来自父类此成员方法来自父类 WriteAgeWriteAgeWriteAgeWriteAge();();();();class Programclass Programclass Programclass Program static void Main(string static void Main(string static void Main(string static void Main(string argsargsargsargs)CStudentCStudentCStudentCStu
15、dent cstu1=new cstu1=new cstu1=new cstu1=new CStudentCStudentCStudentCStudent(计算机系计算机系计算机系计算机系,张三张三张三张三,男男男男););););cstu1.WriteCStudentInfo();cstu1.WriteCStudentInfo();cstu1.WriteCStudentInfo();cstu1.WriteCStudentInfo();CStudentCStudent类继类继类继类继承自承自承自承自StudentStudent类类类类6.2.2构造函数与析构函数构造函数与析构函数派生类构造函数
16、的一般格式如下:派生类构造函数的一般格式如下:():):):):basebase();在派生类构造函数在派生类构造函数在派生类构造函数在派生类构造函数的参数表中,给出的参数表中,给出的参数表中,给出的参数表中,给出了初始化基类数据了初始化基类数据了初始化基类数据了初始化基类数据和新增一般成员数和新增一般成员数和新增一般成员数和新增一般成员数据所需要的全部参据所需要的全部参据所需要的全部参据所需要的全部参数数数数。派生类的构造函数执行派生类的构造函数执行派生类的构造函数执行派生类的构造函数执行顺序如下:顺序如下:顺序如下:顺序如下:(1)(1)按被继承时说明顺按被继承时说明顺按被继承时说明顺按被
17、继承时说明顺序,调用基类的构造函序,调用基类的构造函序,调用基类的构造函序,调用基类的构造函数。数。数。数。(2)(2)调用派生类构造函调用派生类构造函调用派生类构造函调用派生类构造函数体中的内容数体中的内容数体中的内容数体中的内容。2析构函数析构函数 当对象被删除时,派生类的析构函数被执当对象被删除时,派生类的析构函数被执行。由于析构函数也不能被继承,因此在执行派行。由于析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。生类的析构函数时,基类的析构函数也将被调用。执行顺序是执行顺序是:执行派生类的析构函数执行派生类的析构函数执行派生类的析构函数执行派生类的析构函数
18、 执行基类的析构函数执行基类的析构函数执行基类的析构函数执行基类的析构函数其顺序与其顺序与其顺序与其顺序与执行构造执行构造执行构造执行构造函数时的函数时的函数时的函数时的顺序正好顺序正好顺序正好顺序正好相反相反相反相反 class Student class Student class Student class Student public static string public static string public static string public static string sDepartmentsDepartmentsDepartmentsDepartment=软件工程系
19、软件工程系软件工程系软件工程系;private string private string private string private string sClasssClasssClasssClass;/;/;/;/私有字段私有字段私有字段私有字段 public Student(string c)/public Student(string c)/public Student(string c)/public Student(string c)/构造函数构造函数构造函数构造函数 sClasssClasssClasssClass=c;=c;=c;=c;Student()Student()Stud
20、ent()Student()Console.WriteLineConsole.WriteLineConsole.WriteLineConsole.WriteLine(“(“(“(“执行父类析构函数执行父类析构函数执行父类析构函数执行父类析构函数”);”);”);”);public void public void public void public void WriteClassWriteClassWriteClassWriteClass()()()()Console.WriteLine(this.sClassConsole.WriteLine(this.sClassConsole.Writ
21、eLine(this.sClassConsole.WriteLine(this.sClass););););class class class class CStudentCStudentCStudentCStudent:Student/:Student/:Student/:Student/定义大学生类定义大学生类定义大学生类定义大学生类,即子类即子类即子类即子类 private private private private intintintint Age;/Age;/Age;/Age;/定义私有字段定义私有字段定义私有字段定义私有字段 private string private str
22、ing private string private string SName,SexSName,SexSName,SexSName,Sex;/;/;/;/定义私有字段定义私有字段定义私有字段定义私有字段 /定义构造函数定义构造函数定义构造函数定义构造函数 public public public public CStudent(stringCStudent(stringCStudent(stringCStudent(string c,string n,string c,string n,string c,string n,string c,string n,string s,ints,int
23、s,ints,int a):base(c)a):base(c)a):base(c)a):base(c)SNameSNameSNameSName=n;Sex =s;Age =a;=n;Sex =s;Age =a;=n;Sex =s;Age =a;=n;Sex =s;Age =a;CStudentCStudentCStudentCStudent()()()()Console.WriteLineConsole.WriteLineConsole.WriteLineConsole.WriteLine(执行子类析构函数执行子类析构函数执行子类析构函数执行子类析构函数););););分析该程序的分析该程序的
24、分析该程序的分析该程序的输出结果输出结果输出结果输出结果?public void public void public void public void WriteCStudentInfoWriteCStudentInfoWriteCStudentInfoWriteCStudentInfo()()()()Console.Write(0,1,2,3,Console.Write(0,1,2,3,Console.Write(0,1,2,3,Console.Write(0,1,2,3,CStudent.sDepartment,SName,Sex,AgeCStudent.sDepartment,SNam
25、e,Sex,AgeCStudent.sDepartment,SName,Sex,AgeCStudent.sDepartment,SName,Sex,Age););););WriteClassWriteClassWriteClassWriteClass();/();/();/();/此成员方法来自父类此成员方法来自父类此成员方法来自父类此成员方法来自父类 class Programclass Programclass Programclass Program static void Main(string static void Main(string static void Main(stri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 面向对象编程进阶 面向 对象 编程 进阶
限制150内