服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言中简化了类的创建与使用,使得面对对象编程更简单

易语言中简化了类的创建与使用,使得面对对象编程更简单

2021-06-18 15:43易语言帮助手册 易语言

今天小编就为大家分享一篇关于易语言中简化了类的创建与使用,使得面对对象编程更简单,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

面对对象编程,可以说是当前最流行的编程方式,当前流行的面对对象的编程语言很多,如: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、只有标记为“公开”的方法才能在类代码外部通过该类的对象实体来访问。

易语言中简化了类的创建与使用,使得面对对象编程更简单

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

延伸 · 阅读

精彩推荐
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17