Java语言程序设计教程(第二版)翁-凯-肖少拥-王行言-第6章-继承与多态_第1页
Java语言程序设计教程(第二版)翁-凯-肖少拥-王行言-第6章-继承与多态_第2页
Java语言程序设计教程(第二版)翁-凯-肖少拥-王行言-第6章-继承与多态_第3页
Java语言程序设计教程(第二版)翁-凯-肖少拥-王行言-第6章-继承与多态_第4页
Java语言程序设计教程(第二版)翁-凯-肖少拥-王行言-第6章-继承与多态_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言程序设计教程(第二版)翁--凯--肖少拥--王行言-第6章--继承与多态Java语言程序设计教程(第二版)翁--凯--肖少拥--王行言-第6章--继承与多态Java语言程序设计教程(第二版)翁--凯--肖少拥--王行言-第6章--继承与多态xxx公司Java语言程序设计教程(第二版)翁--凯--肖少拥--王行言-第6章--继承与多态文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度第6章继承与多态思考题与习题一、概念思考题1.父类和子类之间的关系是怎样的解答:是继承关系,子类继承父类。有public,protected,private三种继承方式。2.继承如何支持了软件重用解答:在继承中,新的类是基于一个已经存在的基础雷尔定义出来的,通过继承,新的类自动获得了基础类中的所有成员,包括成员变量、方法和各种访问属性的成员,无论时public还是private。在继承后,程序员还可以加入自己定义的新的成员,包括变量和方法。通过继承来定义新的类,远比从头开始写一个新的类要简单快捷和方便,以上便是对代码的重用。的含义是什么解答:含义:只有包内其他类、自己和子类可以访问。有什么作用解答:super表示超类或父类,其只能在子类中使用,可以访问父类中的实例变量、实例方法、还可以访问父类的构造方法(这个super()必须写在构造方法的第一行,而且每个构造方法只能有一个super())。与class有什么异同之处解答:相同点:1)都可以定义抽象方法; 2)都不能实例化对象; 3)定义的抽象方法都需要被重写; 4)都可以定义publicstatic方法,publicstaticfinal常量。不同点: 1)意义不同 抽象类是对事物更高层级的抽象; 接口是对功能的封装。 2)定义方式不同 抽象类用abstractclass定义; 接口用interface定义。 3)内容不同 抽象类中除了抽象方法外,还可以定义构造方法等普通类中定义的所有成员。 接口除了publicabstract方法,publicstaticfinal常量,publicstatic方法,publicdefault方法等这四个内容外,不能定义构造方法等内容 4)使用方式不同 抽象类需要被子类extends继承; 接口需要被实现类implements实现。 5)类只支持单继承,接口支持多继承。 6)应用场景不同 一般情况下,对类进行功能的扩展,优先选择接口。 除了扩展功能外,还需要保存不同的数据,只能选择抽象类;抽象类的抽象方法需要子类重写,抽象类还可以约束所有的子类都具有相同的功能。6.覆盖与重载有什么关系解答:--方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系--覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。--覆盖要求参数列表相同;重载要求参数列表不同。--覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调

用时的实参表与形参表来选择方法体的。缺省使用何种绑定方式解答:动态绑定,缺省意味着它不属于程序执行前的编译阶段确定的绑定。8.什么样的方法会被静态绑定调用解答:final、static、private等方法在程序执行前已经被绑定,也就是说在编译过程中就已经知道这个方法是哪个类的方法,故这三种方法会被静态绑定调用。9.绑定方式是由方法自身所决定的还是在调用方法的时候决定的解答:方法自身所决定的,不同的方法在编译时决定了不同的绑定类型。二、程序理解题1.写出下面程序的输出结果。classA{ publicintdata=5; publicvoidprint(){ }}classBextendsA{ publicintdata=2; publicvoidprint(){ }}publicclassTestAB{ publicstaticvoidmain(String[]args){ Aa=newB(); (); }}解答:252.写出以下程序的运行结果publicclassA{ publicvoidm(inti){ }}publicclassBextendsA{ publicvoidm(intk){ } publicstaticvoidmain(String[]args){ Ap1=newA(); Bp2=newB(); (1); (2); }}解答:1020三、编程题1.设计一个程序,表达各种读物,如小说、杂志、期刊、课本等,每种读物有相同的属性,如页数、价格等,也有不同的属性,如杂志和期刊都有出版周期,而课本有适合对象。写一个测试类的main()来产生一系列随机的读物,并输出它们的信息。解答:packagework06;; }}; }}; } }); }}publicclassTest{ publicstaticvoidmain(String[]args){ Fictionf=newFiction(199,12); (); Magazingm=newMagazing(3,30,"6months"); (); Journalj=newJournal(274,36,"3years"); (); Textbookt=newTextbook(187,,"students"); (); }}2.将上题中的基础类“读物”改写成一个接口,并修改相应的代码。解答:packagework06;; }}; }}; }}); }}publicclassTest{ publicstaticvoidmain(String[]args){ Fictionf=newFiction(199,12); (); Magazinem=newMagazine(3,30,"6months"); (); Journalj=newJournal(274,36,"3years"); (); Textbookt=newTextbook(187,,"students"); (); }}3.编写程序实现求三角形、正方形和圆形的面积,要求先设计一个公共的父类,在其中定义求面积的方法,在继承得到各种形状。解答:packagework08;//定义一个抽象类abstractclassShape{ publicabstractvoidarea();//定义一个抽象方法}//矩形类classRectangleextendsShape{ privatedoubleheight; privatedoublewidth; publicRectangle(doubleheight,doublewidth){ =height; =width; } //重写抽象方法 publicvoidarea(){ doubles=(height*width); "所求矩形面积为"+s); }}//定义一个圆形类classCircleextendsShape{ privatedoubler; publicstaticfinaldoublePI=; publicCircle(doubler){ =r; } //重写抽象方法 publicvoidarea(){ doubles=PI*r*r; "所求矩形面积为"+s); }}//定义一个三角形类classTriangleextendsShape{ publicdoublea; publicdoubleb; publicdoublec; publicTriangle(doublea,doubleb,doublec){ =a; =b; =c; } //重写抽象方法 publicvoidarea(){ doubleq=(a+b+c)/2; doubleresult=q*(q-a)*(q-b)*(q-c); doubles=(result); "所求矩形面积为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论