欢迎来到天天文库
浏览记录
ID:52516605
大小:331.43 KB
页数:10页
时间:2020-03-28
《WINHEX高级专题第五讲类型基础.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、困惑的浪漫(高志鹏)1WINHEX高级专题第五讲类型基础(抽象和继承)注意:淘宝教程共416页,是WINHEX脚本的基础知识,和现在的高级专题不同,大家视自身学习情况购买。前两讲,我们花费大量篇幅介绍了WINHEX脚本语言的一些独特技巧,使其实现了简单的数据交换和结构嵌套。今天我们要来研究现代编程语言中最重要的单元:类型。在汇编和C的时代,程序员几乎是依靠晦涩难懂的寄存器交换和庞大的变量函数群来堆砌代码。虽然从C语言开始,结构化编程思想深入人心,可是由于缺乏对现实事物的高度概括抽象能力,C语言依然是一种不近人情的“机械语言”。那时候,人们希望利用程序在计算机中模
2、拟生产生活是一件相当困难的事情,人们称其为面向过程时代,人们往往为了保障代码的正确性耗费大量精力,而对程序本身的功能性健壮性有所忽略。面向过程语言开发的作品,往往生产周期长、资源浪费严重、代码BUG过多、软件操作复杂等通病。善于创新和进取的人类当然不能满足这种苦难的创造历程,一种简单、集约、平易近人、高度概括的新开发模式呼之欲出,这就是面向对象。面向对象大体可以概括出三个特征:抽象:类型是对一类事物特征行为的抽象,而对象是某个类型的实际范例。人们可以先期够造出一个模板,再根据实际情况向模板赋予活力。继承:人们可以创造一个父类型,再根据父类型的特征衍生出一个拥有同
3、样特征的子类型,同时子类型还拥有自己独特的特性。比如“人”可以有主妇、工人、学生等称号,他们拥有人的基本特征和行为,比如他们需要吃饭睡觉。但是不仅仅是如此,他们还必须拥有区别于其他人的地方。比如主妇有主妇的饭菜需要准备,工人有工人的零件需要组装,学生有学生的作业需要完成。而无论主妇还是工人学生,又可以向下细化具体到某个人,这样一级一级传下去,不仅“人”的基本特性得到继承,又使下一级保持了自己的特征。这种理念,大大提高了开发效率,使得大量代码得以重用。封装:面向过程时代,人们编写一段代码往往实打实反映编写过程,程序内容困惑的浪漫(高志鹏)2可以被轻易理解和访问,这
4、样对软件安全造成严重隐患。面向对象通过对程序数据的分类控制,隐藏了一些行为细节,大大提高了程序的逻辑性和安全性。所以,我们可以说面向对象是一种:可抽象、可继承、可封装的现代化语言。由于C#是面向对象语言中的佼佼者(JAVA也不错,但微软就是微软……),我们还是以它为参照语言,使用WINHEX脚本来模仿它。有面向对象编程基础的朋友可以把重点放在WINHEX脚本上。教程难度从本讲开始会有一个飞跃,大家不但要注意代码的编写方法,更要时时刻刻去参悟面向对象带来的各种困惑。还是那句话:世上无难事只怕有心人。有人问我为什么把网名叫做“困惑的浪漫”,这是由于我时刻都处于一种困
5、惑的状态,而我又认为这种状态对我个人心境的影响是十分浪漫而有趣的。言归正传:在C#中,所有类型都是从System.Object中派生出来的,所以我们可以用两种方法声明一个类型:namespaceWINHEXLAB//创建一个命名空间{publicsealedclasstest//声明一个公共的密封的类{…….}publicsealedclasstest1:System.Object//显示声明一个类并继承于System.Object{……}classProgram//声明一个普通类{staticvoidMain(string[]args)困惑的浪漫(高志鹏)3/
6、/声明一个私有的、静态的、无返回类型并且形参列表为字符串数组变量的Main方法{……}}}以上代码成功通过编译,一共生成了三个类型,test是隐式的声明方法,其IL代码中可以看出其继承于System.Object的直接证据(.classpublicautoansisealedbeforefieldinitWINHEXLAB.testextends[mscorlib]System.Object{}//endofclassWINHEXLAB.test)。Test1用了显示声明其继承关系的方法其IL码和test完全一致。而Program是为了存放程序运行入口而存在的基
7、本类型。如果我们再声明一个类型gzp并使其继承于test1publicsealedclasstest{}//声明一个公共的密封的类publicclasstest1:System.Object{}//显示声明一个类并继承于System.Objectpublicclassgzp:test1{}//声明一个类并继承于test1其IL反汇编码如下:.classpublicautoansibeforefieldinitWINHEXLAB.gzpextendsWINHEXLAB.test1{}//endofclassWINHEXLAB.gzp看到奥秘所在了吧extendsW
8、INHEXLAB.tes
此文档下载收益归作者所有