第6章继承与多态性
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ (一)创建窗体
• (1)创建一个“Windows应用程序”项目。 • (2)向窗体上添加一个标签框,两个命令按钮,界面布
局如图6-2所示,控件属性参数如表6-1所示。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 任务实施
▪ (二)代码的编写 • (1)按F7打开代码视图,在程序代码最后一个右大括号“} ”的上方,定义基类Person的代码 • (2)在Person类的后面,最后一个右大括号的上方,定义学 生类Student的代码 • (3)在窗体Form1的类中,声明一个Sudent类型的字段:
❖任务6.2 为任务6.1的派生类Student创建构造函 数
▪ 任务6.1中的派生类Student没有构造函数,系统默认调 用基类Person中的无参数构造函数,没有初始化任何 一个字段,用显式调用基类构造函数的方法来给派生 类Student创建构造函数。本任务提供了两种修改方法 。
第6章继承与多态性
第6章继承与多态性
源自文库
6.1.1 继承的基本概念
❖任务6.1 基类与派生类
▪ 创建Windows应用程序,定义Person类,并让Student 类继承Person类,让Sudent类的实例调用基类方法和 自身定义的方法来显示信息,如图6-1所示。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 任务实施
❖任务6.2 支撑知识
▪ (一)向基类构造函数传递参数 • 派生类显式调用基类构造函数的一般形式如下: • public 派生类构造函数名(形参列表):base(向基类构造函数传递的实 参列表){} • “base”是C#关键字,表示调用基类的有参构造函数。传递给基类构造 函数的实参列表,通常包含在派生构造函数的“形参列表”中,如: • public Student(string myid, string myname, string mygender) : base(myid, myname, mygender) { } • 上述构造函数中,调用基类构造函数的参数,就是传递给Student类 构造函数的形参。 • public Student(string myid, string myname, string mygender,string mysid,string mymajor) : base(myid, myname, mygender)
– private Student stu;
• (4)双击Form1窗体,添加窗体载入事件Form_Load事件代 码
• (5)在设计窗口中的Form1窗体的【显示基本信息】按钮上 双击,为【显示基本信息】按钮添加Click单击事件代码
• (6)在设计窗口中的Form1窗体的【显示详细信息】按钮上 双击,为【显示详细信息】按钮添加Click单击事件代码
第6章继承与多态性
6.1.2 调用基类构造函数
❖任务6.2 任务实施
▪ (三)程序的运行
• 按下F5键运行该应用程序,如图6-1所示。
第6章继承与多态性
6.1.2 调用基类构造函数
❖任务6.2 支撑知识
▪ (三)程序的运行
• 按下F5键运行该应用程序,如图6-1所示。
第6章继承与多态性
6.1.2 调用基类构造函数
C#
第6章 继承和多态性
第6章继承与多态性
目录
1
6.1 类的继承
2
6.2 多 态 性
3
6.3 接 口
第6章继承与多态性
第6章 继承和多态性
❖ 本章介绍了面向对象中比较重要的两个概念—— 继承和多态性。重点介绍了继承的基本方法,基 类构造函数的调用,继承成员的隐藏,虚方法与 方法重写的概念,抽象方法与抽象类的概念,接 口的概念等。
第6章继承与多态性
6.1 类的继承
❖ 类的继承性,指的是在定义类时,不需要重新编 写代码,就能够包含另一个类定义的字段、属性 、方法等成员,这种在一个类的基础上,建立新 的类的过程,叫做继承。被继承的类叫做基类或 父类,继承得到的新类叫做派生类或子类。
第6章继承与多态性
6.1 类的继承
❖6.1.1 继承的基本概念 ❖6.1.2 调用基类构造函数 ❖6.1.3 继承成员的隐藏
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 支撑知识
▪ (二)成员的访问
• 派生类不能继承基类中的构造函数、静态构造函数以及 析构函数,其他的基类成员都被派生类继承。但是并不 是说所有的基类成员,派生类对象都可以随便访问,这 取决于这些成员被声明时的访问修饰符。
•
public——访问该成员不受限制。
•
protected——访问该成员仅限于其所包含于的类或
该类的派生类,即派生类可以访问基类中的protected成
员。
•
private——访问该成员仅限于其所包含于的类,即
派生类不能直接访问基类的private成员。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 支撑知识
▪ (三)派生类的构造函数
• 派生类默认的构造函数只是调用基类的无参数构造函数 。如果基类中没有可访问的无参数构造函数,则发生编 译时错误,所以在Person类中,需要显式声明一个无参 数的构造函数:
• public Person() { }
第6章继承与多态性
6.1.2 调用基类构造函数
❖ 在创建派生类对象时,系统将先调用基类的构造 函数,完成基类部分字段的初始化,然后再调用 派生类的构造函数,完成派生类自身字段的初始 化。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 任务实施
▪ (三)程序的运行
• 按下F5键运行该应用程序,单击【显示基本信息】,在 标签框中显示学生的基本信息(身份证号、姓名、性别 ),单击【显示详细信息】显示学生的详细新信息(身 份证号、姓名、性别、学号、主修专业),如图6-1所示 。
❖ 如果派生类中没有声明构造函数,那么系统会给 它一个默认构造函数,该默认构造函数完成的功 能就是直接调用其基类的无参数构造函数,此时 如果基类中没有无参数构造函数,编译就会出错 。
❖ 要在派生类中直接调用基类的构造函数,可以通 过base关键字指定调第6章用继承的与多基态性类构造函数。
6.1.2 调用基类构造函数
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 支撑知识
▪ (一)派生类的声明
• 声明一个派生类,跟声明一个一般类的格式是一样的, 唯一的不同点就是声明时必须使用“:”指定其继承的基类 ,派生类声明的一般格式为:
• public class 派生类名称 : 基类名称 {类体} • public可以省略,类定义的默认访问类型就是公有型。
6.1.2 调用基类构造函数
❖任务6.2 任务实施
▪ (一)创建项目和窗体 ▪ (二)代码的编写
• (1)法1:打开任务6.1的项目,为Student类添加下构造 函数:
第6章继承与多态性
6.1.2 调用基类构造函数
❖任务6.2 任务实施
▪ (二)代码的编写
• (2)法2:打开任务6.1的项目,为Student类添加下构 造函数:
• (1)创建一个“Windows应用程序”项目。 • (2)向窗体上添加一个标签框,两个命令按钮,界面布
局如图6-2所示,控件属性参数如表6-1所示。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 任务实施
▪ (二)代码的编写 • (1)按F7打开代码视图,在程序代码最后一个右大括号“} ”的上方,定义基类Person的代码 • (2)在Person类的后面,最后一个右大括号的上方,定义学 生类Student的代码 • (3)在窗体Form1的类中,声明一个Sudent类型的字段:
❖任务6.2 为任务6.1的派生类Student创建构造函 数
▪ 任务6.1中的派生类Student没有构造函数,系统默认调 用基类Person中的无参数构造函数,没有初始化任何 一个字段,用显式调用基类构造函数的方法来给派生 类Student创建构造函数。本任务提供了两种修改方法 。
第6章继承与多态性
第6章继承与多态性
源自文库
6.1.1 继承的基本概念
❖任务6.1 基类与派生类
▪ 创建Windows应用程序,定义Person类,并让Student 类继承Person类,让Sudent类的实例调用基类方法和 自身定义的方法来显示信息,如图6-1所示。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 任务实施
❖任务6.2 支撑知识
▪ (一)向基类构造函数传递参数 • 派生类显式调用基类构造函数的一般形式如下: • public 派生类构造函数名(形参列表):base(向基类构造函数传递的实 参列表){} • “base”是C#关键字,表示调用基类的有参构造函数。传递给基类构造 函数的实参列表,通常包含在派生构造函数的“形参列表”中,如: • public Student(string myid, string myname, string mygender) : base(myid, myname, mygender) { } • 上述构造函数中,调用基类构造函数的参数,就是传递给Student类 构造函数的形参。 • public Student(string myid, string myname, string mygender,string mysid,string mymajor) : base(myid, myname, mygender)
– private Student stu;
• (4)双击Form1窗体,添加窗体载入事件Form_Load事件代 码
• (5)在设计窗口中的Form1窗体的【显示基本信息】按钮上 双击,为【显示基本信息】按钮添加Click单击事件代码
• (6)在设计窗口中的Form1窗体的【显示详细信息】按钮上 双击,为【显示详细信息】按钮添加Click单击事件代码
第6章继承与多态性
6.1.2 调用基类构造函数
❖任务6.2 任务实施
▪ (三)程序的运行
• 按下F5键运行该应用程序,如图6-1所示。
第6章继承与多态性
6.1.2 调用基类构造函数
❖任务6.2 支撑知识
▪ (三)程序的运行
• 按下F5键运行该应用程序,如图6-1所示。
第6章继承与多态性
6.1.2 调用基类构造函数
C#
第6章 继承和多态性
第6章继承与多态性
目录
1
6.1 类的继承
2
6.2 多 态 性
3
6.3 接 口
第6章继承与多态性
第6章 继承和多态性
❖ 本章介绍了面向对象中比较重要的两个概念—— 继承和多态性。重点介绍了继承的基本方法,基 类构造函数的调用,继承成员的隐藏,虚方法与 方法重写的概念,抽象方法与抽象类的概念,接 口的概念等。
第6章继承与多态性
6.1 类的继承
❖ 类的继承性,指的是在定义类时,不需要重新编 写代码,就能够包含另一个类定义的字段、属性 、方法等成员,这种在一个类的基础上,建立新 的类的过程,叫做继承。被继承的类叫做基类或 父类,继承得到的新类叫做派生类或子类。
第6章继承与多态性
6.1 类的继承
❖6.1.1 继承的基本概念 ❖6.1.2 调用基类构造函数 ❖6.1.3 继承成员的隐藏
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 支撑知识
▪ (二)成员的访问
• 派生类不能继承基类中的构造函数、静态构造函数以及 析构函数,其他的基类成员都被派生类继承。但是并不 是说所有的基类成员,派生类对象都可以随便访问,这 取决于这些成员被声明时的访问修饰符。
•
public——访问该成员不受限制。
•
protected——访问该成员仅限于其所包含于的类或
该类的派生类,即派生类可以访问基类中的protected成
员。
•
private——访问该成员仅限于其所包含于的类,即
派生类不能直接访问基类的private成员。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 支撑知识
▪ (三)派生类的构造函数
• 派生类默认的构造函数只是调用基类的无参数构造函数 。如果基类中没有可访问的无参数构造函数,则发生编 译时错误,所以在Person类中,需要显式声明一个无参 数的构造函数:
• public Person() { }
第6章继承与多态性
6.1.2 调用基类构造函数
❖ 在创建派生类对象时,系统将先调用基类的构造 函数,完成基类部分字段的初始化,然后再调用 派生类的构造函数,完成派生类自身字段的初始 化。
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 任务实施
▪ (三)程序的运行
• 按下F5键运行该应用程序,单击【显示基本信息】,在 标签框中显示学生的基本信息(身份证号、姓名、性别 ),单击【显示详细信息】显示学生的详细新信息(身 份证号、姓名、性别、学号、主修专业),如图6-1所示 。
❖ 如果派生类中没有声明构造函数,那么系统会给 它一个默认构造函数,该默认构造函数完成的功 能就是直接调用其基类的无参数构造函数,此时 如果基类中没有无参数构造函数,编译就会出错 。
❖ 要在派生类中直接调用基类的构造函数,可以通 过base关键字指定调第6章用继承的与多基态性类构造函数。
6.1.2 调用基类构造函数
第6章继承与多态性
6.1.1 继承的基本概念
❖任务6.1 支撑知识
▪ (一)派生类的声明
• 声明一个派生类,跟声明一个一般类的格式是一样的, 唯一的不同点就是声明时必须使用“:”指定其继承的基类 ,派生类声明的一般格式为:
• public class 派生类名称 : 基类名称 {类体} • public可以省略,类定义的默认访问类型就是公有型。
6.1.2 调用基类构造函数
❖任务6.2 任务实施
▪ (一)创建项目和窗体 ▪ (二)代码的编写
• (1)法1:打开任务6.1的项目,为Student类添加下构造 函数:
第6章继承与多态性
6.1.2 调用基类构造函数
❖任务6.2 任务实施
▪ (二)代码的编写
• (2)法2:打开任务6.1的项目,为Student类添加下构 造函数: