Welcome 微信登录

首页 / 软件开发 / C#

密封类

密封类

密封类2007-11-10 本站 想想看,如果所有的类都可以被继承,继承的滥用会带来什么后果?类的层次结构体系将变得十分庞大,类之间的关系杂乱无章,对类的理解和使用都会变得十分困难。有时候,我们并不希望自己编写的类被继承。另一些时候,有的类已经没有再被继承的必要。提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题。密封类在声明中使用sealed修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它灯的基类,C#将会...
密封方法

密封方法

密封方法2007-11-10 本站 我们已经知道,使用密封方法可以防止对类的继承。还提出了密封方法(sealed method)的概念,以防止在方法所在类的派生类中对该方法的重载。对方法可以使用sealed修饰符,这时我们称该方法是一个密封方法。不是类的每个成员都可以作为密封方法,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是和override修饰符同时使用。请看例子代码:程序清单14-7:using ...
继承中关于属性的一些问题

继承中关于属性的一些问题

继承中关于属性的一些问题2007-11-10 本站 和类的成员方法一样,我们也可以定义属性的重载、虚属性、抽象属性以及密封属性的概念。与类和方法一样,属性的修饰也应符合下列规则:属性的重载●在派生类中使用修饰符的属性,表示对基类中的同名属性进行重载。●在重载的声明中,属性的名称、类型、访问修饰符都应该与基类中被继承的属性一致。●如果基类的属性只有一个属性访问器,重载后的属性也应只有一个。但如果基类的属性同时包含get和set属性访问器,重载后的属性可以只有...
C#继承详解

C#继承详解

C#继承详解2007-11-10 本站 为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总是希望能够利用前人或自己以前的开发成果,同时又希望在自己的开发过程中能够有足够的灵活性,不拘泥于复用的模块。今天,任何面向对象的程序设计语言都必须提供两个重要的特性:继承性(inheritance)和多态性(polymorphism)。如果所有的类都处在同一级别上,这种没有相互关系的平坦结构就会限制了面向对象的特性。继承的引入,就是在类之间建立一种相...
应用程序的体系结构

应用程序的体系结构

应用程序的体系结构2007-11-10 本站 一个应用程序的体系结构是应用程序结构的一种概念性描述。当前,随着信息技术的飞速发展,现代企业中大多数采用了分布式计算机。日益激烈的竞争要求应用程序尽量缩短开发周期,并且具有高度的灵活性,以适应变化多端的市场需要。这一切都对分布式应用程序的开发人员在业务方面和技术方面提出了挑战。传统的分布式应用程序大多是两层的客户机/服务器模式(Client/Server),客户机直接连接到服务器上,在客户机上负责处理数据和执行...
组件的概念和特点

组件的概念和特点

组件的概念和特点2007-11-10 本站 组件的英文名为"component",也称为元件。实际上组件并不是一种新概念,它在许多成熟的工程领域有着十分广泛的应用。比如我们组装计算机,自己并不一定要了解CPU、主板、光驱等配件的工作原理,而只需要知道如何将这些配件组装在一起。软件行业的组件比其它许多行业发展得都要慢。在计算机软件发展的早期,一个应用系统往往是一个单独的应用程序。随着人们对软硬件需要的不断增加,应用更加复杂,程序更加庞大,...
接口的含义

接口的含义

接口的含义2007-11-10 本站 了解了组件的基本含义后,我们还必须进一步理解接口(interface)的含义。接口描述了组件对外提供的服务。在组件和组件之间、组件和客户之间都通过接口进行交互。因此组件一旦发布,它只能通过预先定义的接口来提供合理的、一致的服务。这种接口定义之间的稳定性使客户应用开发者能够构造出坚固的应用。一个组件可以实现多个组件接口,而一个特定的组件接口也可以被多个组件来实现。组件接口必须是能够自我描述的。这意味着组件接口应该不依赖于...
组件化程序设计

组件化程序设计

组件化程序设计2007-11-10 本站 组件化程序设计方法继承并发展了面向对象的程序设计方法。它把对象技术应用于设计,对面向对象的程序设计的实现过程作了进一步的抽象。我们可以把组件化程序设计方法用作构造系统的体系结构层次的方法,并且可以使用面向对象的方法很方便地实现组件。组件化程序设计强调真正的软件可重用性和高度的互操作性。它侧重于组件的产生和装配,这两方面一起构成了组件化程序设计的核心。组件的产生过程不仅仅是应用系统的需求,组件市场本身也推动了组件的发...
接口的继承

接口的继承

接口的继承2007-11-10 本站 接口具有不变性,但这并不意味着接口不再发展。类似于类的继承性,接口也可以继承和发展。注意:接口继承和类继承不同。首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现。其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。接口可以从零或多个接口中继承。从多个接口中继承时,...
组件编程技术

组件编程技术

组件编程技术2007-11-10 本站 从软件业的发展历程来看,程序设计方法经历了多次变革。每当一种程序设计方法不能适应应用软件发展的需要时,人们就会努力寻找一种新的方法来解决这种“软件危机”。组件化程序设计就是程序设计的一种新的变革,它结合了对象技术和组件技术两种特性,更为适合现代企业级应用程序的开发需要。这一节我们将向读者简要地介绍组件和分布式应用程序设计的基础知识。如果您希望了解更多组件化程序设计的知识,请参考这方面论述的专著...
对接口成员的访问

对接口成员的访问

对接口成员的访问2007-11-10 本站 对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。但由于接口支持多继承,在多继承中,如果两个父接口含有同名的成员,这就产生了二义性(这也正是中取消了类的多继承机制的原因之一),这时需要进行显式的声明。程序清单15-2:using System;interface ISequence{int Count{get;set;}...
接口的成员

接口的成员

接口的成员2007-11-10 本站 15.3.1 接口成员的定义接口可以包含一个和多个成员,这些成员可以是方法、属性、索引指示器和事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。下面例子中接口IExample包含了索引指示器、事件E、方法F、属性P这些成员:interface IExample{ string this[int index] {get;set;}event EventHandler E;void F(int ...
接口的实现

接口的实现

接口的实现2007-11-10 本站 15.4.1 类对接口的实现前面我们已经说过,接口定义不包括方法的实现部分。接口可以通过类或结构来实现。我们主要讲述通过类来实现接口。用类来实现接口时,接口的名称必须包括在类声明中的基类列表中。下面的例子给出了由类来实现接口的例子。其中ISequence为一个队列接口,提供了向队列尾部添加对象的成员方法Add(),IRing为一个循环表接口,提供了向环中插入对象的方法Insert(object obj),方法返回插入的...
C#接口技术

C#接口技术

C#接口技术2007-11-10 本站 Windows 2000的推出是许多人盼望已久的事情,它带来的多种新特性令人为之兴奋不已。对于一名程序设计人员来说,最关注的一些问题有:在Windows 2000操作系统中将组件对象模型(COM)与Microsoft事务服务器(MTS)合二为一,命名为COM+;全新的应用程序接口(Application Programmer Interface)特性,等等。那么,这一切对于软件开发人员来说意味着什么呢?如何能够在新的...
动态链接库

动态链接库

动态链接库2007-11-10 本站 你是否有过这样的经历?在配置不是很好的机器上运行一些不是很完善的应用程序,系统速度越来越慢,直至弹出一个警告对话框:“系统资源严重不足!请关闭部分Windows应用程序......”。这往往是静态链接的缘故。使用普通的函数库,在程序链接时将库中的代码拷贝到可执行文件中,这叫作静态链接。假设有多个程序同时执行,这时内存中就会保留许多重复的代码副本。使用动态链接库则不一样。只有程序在执行时才将库代码...
编译单元

编译单元

编译单元2007-11-10 本站 我们再首先介绍一下编译单元(Compilation units)的概念。顾名思义,编译单元是能够被编译器进行编译的最小单位。编译单元定义了源文件的整体结构。一个编译单元的声明格式如下:using-directives attributes namespace-member-declarations一个C#程序包含了一个或多个编译单元,每一个编译单元包含在一个独立的源文件中。当C#程序被编译时,编译器对程序的所有编译单元进...
<< 11 12 13 14 15 16 17 18 19 20 >>