易语言中简化了类的创建与使用,使得面对对象编程更简单
面对对象编程,可以说是当前最流行的编程方式,当前流行的面对对象的编程语言很多,如:C++、JAVA等等。易语言3.8版推出后,同样紧跟编程语言发展的方向,也开始全面支持面对对象编程。并且在中文化编程的基础上,简化了类的创建与使用,使面对对象的编写过程变的更加简单。
1.类的插入
面对对象编程就离不开类的创建,下面首先介绍一下对象和类的区别。
对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。
易语言中,可以通过菜单“插入”→“类模块”来创建类,如图所示:
2.对象的构造和析构
创建后的类自动生成2个方法“_初始化()
”和“_销毁()
”。
“_初始化()
”方法在基于该类的对象被创建后,会被自动调用,该方法的功能相当于构造函数;“_销毁()
”方法,在基于该类的对象被销毁前,会被自动调用,该方法的功能相当于析构函数。在其他面向对象编程语言中,构造和析构函数是需要程序员自己创建的,易语言中简化了这个过程。
构造函数和析构函数用于在基于该类的对象被构造(创建)和析构(销毁)时初始化和销毁数据。
而对象的构造和析构的过程是自动的,构造顺序为:先构造基类对象,再构造其继承类对象,如果类中具有对象成员,则先于其所处对象构造;析构顺序为:先析构继承类对象,再析构基类对象,如果类中具有对象成员,则在其所处对象后析构。
编程时需要做的事情就是在“_初始化()
”和“_销毁()
”方法中,编写基于该类的对象创建和销毁时需要执行的代码。
3.类的封装
创建一个新类后,在“类名
”上按下回车键,可以定义类的私有成员。点击Ctrl+N,可以新建一个方法,在新建的方法中编辑代码,就可以实现类的一些功能。
新定义方法,可以设置“公开
”属性。没有设置“公开
”属性的方法,在基于该类的对象创建后是不可见的,这样可以达到信息隐藏的目的,即让类仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。如图所示:
类是将数据变量和方法封装在一起的,其中方法(函数)表示了类的行为,数据变量是类的私有成员(类的属性),私有成员只能由该类本身的方法代码所访问,属于私有性质。所以提倡“对象调方法,方法改属性”。
类的封装包含以下几个方面:
- (1)类的所有成员数据变量只能由该类本身的方法代码所访问,属于私有性质。
- (2)在继承类中可以以“类名.方法名”的方式指定访问基础类中的方法。
- (3)只有标记为“公开”的方法才能在类代码外部通过该类的对象实体来访问。
4.类的继承性
易语言在新创建一个类的时候,可以看到有一个名为“基类”的项目,该项目用来定义本类的基础类。该项目不填写内容的情况下,该类就没有基类;如果在该项目中填入一个类的名称,那么该类就是从填写的类中派生而来的。派生后的类具有继承性。
如,当前已经创建了一个类1,那么在创建类2的时候在基类中填入“类1
”,这样类2就是类1的派生类。如图所示:
派生出的类具有继承性,如图3中,“类1
”是一个基类,“类2
”是“类1
”的派生类,那么“类2
”就继承了“类1
”的所有方法。
下面用在画板中画各种图形的例程,来进一步说明类继承性。
首先创建一个基类“图形
”,并创建它的各种方法。代码如下:
然后创建它的派生类:“椭圆
”
“椭圆
”是“图形
”的派生类,这样“椭圆
”就继承了“图形
”类中的所有公开的方法,即“椭圆
”也具有了“图形
”中所公开的方法。这样在“椭圆
”对象创建后就可以调用这些继承的方法:
可以看到“图形
”类中的“取颜色()
”和“取结束位置()
”方法,没有设置“公开
”属性,所以在基于“椭圆
”(“图形
”类的派生类)的对象被创建后,没有公开的方法即被隐藏起来了。
注意:
在一个派生的类中,可以直接调用其父类的方法。“椭圆
”类的绘画方法中,就直接调用了其父类的“取颜色()
”方法,将填充颜色取出:
这里要注意,虽然子类中可以直接调用父类的方法,但子类调用父类的方法取出和更改的都是自身的私有成员,而不能直接取得和更改父类的私有成员值。而例程中正确的设置了颜色,是由于程序中使用了覆盖。覆盖后面会详细介绍。
5.类的多态性
程序中,创建了一个类型为“图形
”的数组,程序运行后,将其子类的变量依次加入到数组中,代码如下:
通过运行上述程序,可将4个子类对象变量加入到父类 “图形对象
”数组对象变量中,以后程序可以通过:“图形对象[X].方法名()
”来调用对应子类的不同方法。
易语言中类的多态性是指对象变量的多态性。
这种将子类变量赋值给父类变量的方法,体现了对象变量的多态性。
6.虚拟方法
虚拟方法,又称为虚函数,是一种虚拟出的方法。
虚拟方法就是允许被子类重新定义父类的方法,这就是常说的函数的覆盖(overload)。
其他编程语言中通过“virtual
”关键字来定义虚函数,在易语言中可以不用定义,只要子类中有和父类参数和属性完全相同的方法,然后通过上面讲到的子类变量赋值给父类变量的作法,可以达到覆盖虚方法的目的。当然也可以定义一个抽象虚方法(纯虚函数),即一个空方法,只提供方法的框架而不编写任何代码,实现的过程完全通过子类的覆盖来实现。
例程中,“图形
”基础类定义了一个“绘画()
”的方法,该方法中没有任何代码,是一个抽象虚方法(纯虚函数),程序又定义了“图形
”类的几个派生类,包括“直线
”、“矩形
”、“椭圆
”和“圆角矩形
”,这些派生类中,都定义了同名的“绘画()
”方法,派生类的“绘画()
”方法实现了在画板中画出相应的图形。
例程中,当按下鼠标并移动,则在画板中跟随鼠标移动来画出所选图形,当鼠标被松开,就在画板中确定画出指定图形,代码如下:
程序中,调用了图形对象的“绘画()
”方法,而在“图形
”类中的“绘画()
”方法是没有编写任何代码的,在这里,它会在画板中画出各种图形,是由于其派生类中的“绘画
”方法将“图形
”类(它的父类)中的“绘画()
”方法覆盖了,这种子类可以重新定义父类函数的特性,充分体现出了函数的多态性。这个覆盖的过程是动态的,即在编写类的时候,不定义某个方法要执行的代码,当调用此方法时,系统自动根据所调用的对象实体去调用对应的方法。
这里说继承的作用是为了代码的重用,那多态则是为了实现接口的重用。像例程中提供的绘画方法的接口,通过覆盖实现了画出多种不同的图形。
1、易语言支持类的构造、析构、继承、虚拟方法、多态、封装特性。
2、对象的构造:
构造顺序为:先构造基类对象,再构造其继承类对象,如果类中具有对象成员,则先于其所处对象构造。
3、对象的析构:
析构顺序为:先析构继承类对象,再析构基类对象,如果类中具有对象成员,则在其所处对象后析构。
4、继承:
任何类均可以指定另外一类作为其基类,继承层数不限。
5、虚拟方法:
在基类中的方法可以被其继承类中的同名方法覆盖,当调用此方法时,系统自动根据所调用的对象实体去调用对应的方法。
6、多态性:
可以将一个继承类对象赋予到其基类数据类型变量中,此时对此基类对象变量进行操作,将反映出继承类对象的特性。
7、类的封装:
- A、类的所有成员数据变量只能由该类本身的方法代码所访问,属于私有性质。
- B、在继承类中可以以“类名.方法名”的方式指定访问基础类中的方法。
- C、只有标记为“公开”的方法才能在类代码外部通过该类的对象实体来访问。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接