第5章 面向对象的高级编程,5.1 类的继承与多态性 5.2 版本控制 5.3 接口 5.4 委托和事件 5.5 反射 5.6 序列化与反序列化,5.1 类的继承与多态性,封装:隐藏调用者不需要了解的信息。 继承:简化类的设计,为系统维护提供便利。 多态:类为名称相同的方法提供不同实现方式的能力。,
第13章 PHP的面向对象编程Tag内容描述:
1、操作的共享。
,5.1.1 基类和扩充类,OOL中继承的两种实现方式:实现继承和接口继承。
被继承的类叫基类/父类 从基类继承来的类叫扩充类/派生类/子类 实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。
在实现继承中,派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。
例如:System. Windows.Forms.TextBox和System.Windows.Forms.ListBox派生于System.Windows.Forms.Control ,并重写了函数,或提供了新的函数,以实现特定类型的控件。
接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。
C#中,实现继承只允许单一继承 ,接口可实现多重继承。
因为System.Object是一个公共的基类,所以每个C#类(除了Object类之外)都有一个基类,还可以有任意多个基接口。
,5.1.1 基类和扩充类,声明扩充类的语法:访问修饰符 class 扩充类名称:基类名称/程序代码扩充类继承了所有定义在基类中数据的定义和方法。
但是扩充类不继承基类的。
2、,5.1.1 基类和扩充类,继承表示现实世界中遗传关系的直接模拟。
它表示类之间的内在联系以及对属性和操作的共享。
,5.1.1 基类和扩充类,声明扩充类的语法:访问修饰符 class 扩充类名称:基类名称/程序代码扩充类继承了所有定义在基类中数据的定义和方法。
但是扩充类不继承基类的构造函数。
,两种实现继承的方式:类继承和接口继承。
类继承只允许单一继承 ,接口可实现多重继承。
被继承的类叫基类 继承自其他类的类叫扩充类,5.1.1 基类和扩充类,【例5-1】基类和扩充类的定义及用法。
,5.1.2 多态性,多态性是指对象可以表示多个类型的能力。
在C#中,多态性的定义是:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。
3种实现多态性的方法: 通过继承实现多态性。
通过抽象类实现多态性。
通过接口实现多态性。
,5.1.2 多态性,1、虚拟方法 在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符virtual表明:public virtual void myMethod()/程序代码扩充类则用override重写:public。
3、他内容。
33实验中的问题解答1. 如何添加某个事件(例如窗体的 Shown事件)?如何删除某个事件?答:添加和删除事件均在设计视图下利用属性中的事件完成。
2. 使用 textBoxStartAmount.Focus(); 与使用 键让某控件获取焦点有何不同?答:前者用于动态设置,后者用于静态设置。
3. 实验 2:private double Caculate(double startAmount, double rate, int count)叠加次数 count是什么意思?答:叠加次数是指到期后将计算出来的利息作为存款再次计算,例如存款时间为 1年,则按年算息叠加次数为 1,按月算息叠加次数为 12,按季度算息叠加次数为 4. 实验报告什么时候交?进度如何安排?答:各人根据自己的情况安排进度,完成一个,写一个实验报告。
5. 如何定义属性?如何给属性赋值?如何获取属性的值?答:见书上 P59例 3-10444.1 封装、继承与多态封装:隐藏调用者不需要了解的信息。
继承:简化类的设计。
多态:类为名称相同的方法提供不同实现方式的能力。
55封装 模块信息通过类封装。
4、 类 3. 面向对象编程的特点 面向对象编程有以下特点:对象是程序的主体:对象具有多态性:对象具有继承性:对象具有封装性: 13.1.2 对象变量 对象变量的声明 声明一个对象变量的语法格式为 Dim | ReDim | Static | Private | Public变量名As New类名,【例13-1】使用对象变量创建新窗体。
设计步骤如下:(1) 设计界面与设置属性参见图13-1左。
,图13-1 “克隆”窗体,(2) 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click()Dim objForm As New Form1objForm.Show End Sub运行程序,单击命令按钮,将不断地创建与原有窗体完全一样的新窗体,如图13-1右所示。
,2. 对象变量的赋值 对象变量赋值语句的语法格式为:Set变量名=对象 【例13-2】使用对象变量引用按钮对象。
设计步骤如下:(1) 设计界面与设置属性参见图13-2左。
,图13-2 引用按钮对象,(2) 编写窗体的MouseUp事件。
5、1 基类和扩充类,声明扩充类的语法:访问修饰符 class 扩充类名称:基类名称/程序代码扩充类继承了所有定义在基类中数据的定义和方法。
但是扩充类不继承基类的构造函数。
,两种实现继承的方式:类继承和接口继承。
类继承只允许单一继承 ,接口可实现多重继承。
被继承的类叫基类 继承自其他类的类叫扩充类,5.1.1 基类和扩充类,【例5-1】基类和扩充类的定义及用法。
,5.1.2 多态性,多态性是指对象可以表示多个类型的能力。
在C#中,多态性的定义是:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。
3种实现多态性的方法: 通过继承实现多态性。
通过抽象类实现多态性。
通过接口实现多态性。
,5.1.2 多态性,1、虚拟方法 在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符virtual表明:public virtual void myMethod()/程序代码扩充类则用override重写:public override void myMethod()/程序代码,5.1.2 多态(续),使用虚拟方法和重写方法时,。
6、结构化程序设计中存在的问题。
它采用面向对象的方法来解决问题,不再将问题分解为过程,而是将问题分解为对象。
在结构化的程序设计中,要解决某一个问题,是将问题进行分解,然后用许多功能不同的函数来实现,数据与函数是分离的。
面向对象的程序设计方法的思考方式是面向问题结构的,它认为现实世界是由对象组成的,要解决某个问题,必须要首先确定这个问题是由哪些对象组成的。
对象是现实世界中可以独立存在的、可以被区分的一个实体(也可以是一些概念上的实体),它有自己的属性、作用于对象的操作(即作用于对象的方法)和对象响应的动作(即事件)。
对象之间的相互作用通过消息传送来实现。
因此面向对象编程的设计模式为“对象+消息”。
在面向对象的编程中,有几个很重要的基本概念:类、对象、属性、方法、实例和继承等。
“类”可以打一个比喻,月饼模子可以看成是一个“类”,扣出的月饼是对象,每个月饼都继承了模子(类)的属性。
比如模子的形状是菱形,那扣出来的月饼就是菱形。
每个月饼还具有它自己的特有属性,例如,某个月饼的馅有蛋黄,某个月饼的馅有枣泥。
通过一些方法可以改变这些属性,例如把月饼切成四份等。
,6.1 “小球随机碰撞方形。
7、的话)。
这样做虽然效率很高,但是封装却不够。
如果有一个统一的数据库接口,那么就可以不对程序做任何修改而适用于多种数据库,从而使程序的移植性和跨平台能力都大大提高。
,13.1 PHP中的类应用,许多PHP的爱好者在学习过程中感到对PHP中类的概念较难理解和掌握,虽然知道类既然存在就有其存在的道理,但是由于平时接触和使用的机会较少,也就一略而过。
其实,只要读者理解变量和函数这些PHP基本概念的话,掌握类的含义就不成问题。
所谓类就是指由变量和作用于变量的函数组成的集合。
类提供了一种对现实世界中事物的描述方式。
通过有效的使用类,读者可以将描述同一对象的多个变量和函数组合在一起,作为一个整体使用,从而使编写出来的程序更直观,更合理,更易于维护。
,13.1.1 深入PHP中的类,当定义一个类时,实际上是声明了它确切形式和属性,这是通过指定类所包含的数量和对数据进行的操作的代码来实现的。
也许有一些简单的类仅包含代码或数据,但是,现实世界中的类都包含两者。
类的声明是通过关键词“class”来声明的,其一般形式为: class classname 函数语句; 在PHP中面向对 象编程是通过类来完。