您好,欢迎访问三七文档
-1-第9章实现抽象图形——抽象类与接口能力目标:1.理解关键字abstract、sealed、virtual、override,能编写抽象类和密封类。2.理解接口类型,能定义接口、实现接口。3.能编写含面积和周长抽象方法的图形抽象类及其派生的圆和矩形密封类。4.能编写含面积和周长方法的图形接口、以及实现接口的圆和矩形密封类。9.1项目预览本章要完成的实现图形抽象类与接口的WPF应用程序项目,运行界面如图9-1所示。(a)(b)图9-1实现图形抽象类与接口的WPF项目运行界面9.7本章小结本章中,我们学习了使用关键字abstract声明的抽象方法和抽象类。抽象方法是没有方法体、不能执行的方法,除了抽象方法,还有抽象属性等成员。抽象类是不能实例化的类,抽象类通常有抽象成员,但极端情况也可没有。不过,具有抽象成员的类一定是抽象类。密封类是使用关键字sealed声明的。密封类与抽象类是类类型的两个极端,相互不兼容。定义抽象类是为了派生,由派生的子类实现其抽象成员。而密封类则不允许派生,类的继承链条到密封类就终结了。类可声明为密封的,类内部的成员也可声明为密封的,如密封方法和密封属性等。密封成员不能被派生类重写。密封成员不一定在密封类中。密封类可以有密封成员,非密封类也可包含密封成员。还有,密封成员一定是继承基类的重写成员,是成员的最后一次实现。就是说,对于类成员,sealed总是和override一起使用的。除了抽象类,我们还学习了功能与之相似的接口类型。它们均是抽象编程的机制,都支持协定与实现相分离,区分开做什么(what)和怎么做(how)。但接口是另外一种类型,不属于类类型。接口的成员都是默认抽象和公共的。接口在继承方面也比类复杂,接口支持多重继承,类则是单一继承。接口与类的关联是:由类实现接口。类似于类之间的继承,实现接口的类,要把承接过-2-来的所有抽象接口成员都代码化、都能执行、即都实现了才行。与接口之间的多重继承类似,实现接口的类也可同时实现多个接口。现把本章的知识点归纳为表9-1。表9-1本章知识点归纳知识点操作示例抽象方法与抽象类abstractclassShape//抽象图形类{publicabstractdoubleCalcArea();//抽象的计算面积方法publicabstractdoubleCalcGirth();//抽象的计算周长方法}密封类sealedclassCircle:Shape{...}//继承抽象图形类的密封圆类密封方法publicsealedoverridedoubleCalcArea(){...}publicsealedoverridedoubleCalcGirth(){...}密封属性publicsealedoverridedoubleWidth{get{...}set{...}}接口类型interfaceIShape//图形接口{doubleCalcArea();//计算面积方法(默认公共抽象的)doubleGirth{get;}//只读周长属性(默认公共抽象的)}接口多重继承interfaceIA{...}interfaceIB{...}interfaceIC:IA,IB{...}实现多个接口classE{...}classF:E,IA,IB{...}有了这些知识,就可以建立本章开头的项目了。9.8项目实训9:实现图形抽象类与接口能力目标:(见本章开头)实训内容及步骤:1.创建一个WPF应用程序项目,编写图形抽象类,内含计算周长和面积的抽象方法。再编写继承图形抽象类的密封圆类和矩形类。最后设计一个界面,用于计算圆、矩形的周长和面积。设计界面如图9-9(a)所示,运行界面如图9-1(a)所示。(a)(b)-3-图9-9实现图形抽象类与接口的WPF项目设计界面提示:部分代码参考如下。abstractclassShape//抽象的图形类{abstractpublicdoubleCalcArea();//抽象的计算面积方法...}classRectangle:Shape//继承抽象图形类的矩形类{publicdoubleLength//长度属性{get{return_length;}set{if(value0){throw...}else{...}}}publicoverridedoubleCalcArea(){...}//重写继承基类的抽象方法...}sealedclassCircle:Shape//继承抽象图形类的密封圆类{...}...privatevoidbuttonCircle_Click(objectsender,RoutedEventArgse){try{doubleradius=double.Parse(textBoxRadius.Text);CircleaCircle=newCircle(radius);textBoxCircleInfo.Text=成功构造了半径为+aCircle.Radius+的圆。;textBoxCircleInfo.Text+=\n+圆面积:+......}catch(Exceptionex){textBoxCircleInfo.Text=异常:+ex.Message;}}2.在上题项目中,添加一个WPF窗口,编写图形接口,内含计算周长和面积方法。再编写实现该接口的密封圆类和矩形类。最后设计一个界面,用于计算圆、矩形的周长和面积。设计界面如图9-9(b)所示,运行界面如图9-1(b)所示。提示:本题界面大部分与第1题相同,可直接复制、粘贴过来。部分代码参考如下。interfaceIShape//图形接口{doubleCalcArea();//接口成员方法(默认抽象公共的)...}classRectangle2:IShape//实现图形接口的矩形类{...}...3.(选做)创建一个Windows应用程序项目,实现第1、第2题的功能。-4-第9章实现抽象图形——抽象类与接口....................................................................................19.1项目预览...........................................................................................................................19.2抽象方法与抽象类........................................................................错误!未定义书签。9.3密封类............................................................................................错误!未定义书签。9.4密封方法与密封属性....................................................................错误!未定义书签。9.5接口类型........................................................................................错误!未定义书签。9.6接口多重继承与实现多个接口....................................................错误!未定义书签。9.7本章小结...........................................................................................................................19.8项目实训9:实现图形抽象类与接口...........................................................................2
本文标题:3《C#-3.0项目导向与实训程序设计教程》第9章实现抽象图形--抽象类与接口
链接地址:https://www.777doc.com/doc-5363643 .html