资源描述:
《实验9 类继承与多态-2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验九类继承与多态(二)课程名称:面向对象程序设计实验实验项目名称:实验九类继承与多态(二)【实验目的】1.掌握Java类的接口、抽象类2.理解多态设计【实验内容】1.编译下面的程序,指出错误.interfaceA{//语句1voidshow();voidshow(inti){System.out.println("Ashow()");}}(1)是否出错?出错原因?出错。原因:抽象方法未指定主体。(2)如果将上面语句1的interface改为abstractclass,编译是否出错?(提示:注意abstract修饰符)出错。此方法需要主体而不是分号。(3)根据上面的(
2、1)和(2),可以看出接口与抽象类的什么区别?接口类是一种完全抽象的引用类型,不能定义非抽象方法,而抽象类不一定必须有抽象方法。2.编译下面的程序,指出错误.interfaceIA{voidshow();voidshow(inti);}classAimplementsIA{//语句1publicvoidshow(inti){//语句2System.out.println("Ashow()");}}(1)上面的程序编译是否出错?出错原因?出错。原因:类型A必须实现继承的抽象方法IA.show()。(2)如果将语句1中的class改为abstractclass,编译是否出
3、错?为何?不出错。A为抽象类,可以继承抽象方法。(3)如果将语句2中的public删除,编译是否出错?为何?出错。不能降低自IA继承的方法的可视性。3.编译下面的程序,回答问题abstractclassA{publicvoidshow(){System.out.println("Ashow()");}}classAbstractClassTest{publicstaticvoidmain(String[]args){Aa=newA();}}(1)编译是否出错?出错。(2)类A的定义编译是否出错?说明什么?(考虑抽象类中是否可以没有抽象方法)类A的定义编译没有出错。抽象
4、类中可以没有抽象方法。4.编译下面的程序,回答问题abstractclassA{staticabstractvoidshow();}classBextendsA{publicstaticvoidmain(String[]args){show();}}(1)上面的程序编译是否出错?出错。类型A中的抽象方法show只能设置可视性修饰符“公用”或者“受保护”中的一个类型B必须实现继承的抽象方法A.show()(2)如何改正?abstractclassA{publicabstractvoidshow();}abstractclassBextendsA{publicvoidsh
5、ow(){}publicstaticvoidmain(String[]args){}}5.编译下面的程序,回答问题interfaceIA{inti;voidshow();}(1)上面的程序编译是否出错?出错。(2)如果出错,错在何处?空白终态字段i可能尚未初始化i未初始化6.编译下面的程序,回答问题.interfaceIA{inti=100;voidshow();//代码1}interfaceIB{intj=100;voidshow(inta);//代码2}classAimplementsIA,IB{publicvoidshow(){}//代码3publicvoids
6、how(inta){}//代码4}(1)上面的程序编译是否出错?未出错。(2)代码1和代码3的区别是什么?同样,代码2与代码4的区别是什么?代码1和代码3的区别:代码1定义抽象方法,代码3实现抽象方法。代码2与代码4的区别:代码2定义抽象方法,代码4实现抽象方法。7.编译下面的程序,回答问题.abstractclassA{voidshow1(){}}abstractclassB{voidshow2(){}}classCextendsA,B{voidshow3(){}}(1)上面的程序编译是否出错?出错。(2)如果出错,错在何处?类C不能继承两个超类。8.编译下面的程序
7、,回答问题.interfaceIA{}//没有定义任何成员classB{}//没有定义任何成员(1)上面的程序编译是否出错?未出错。(2)如果没有出错,你可以得出什么结论?接口和类可以不定义任何成员。9.编译并运行下面程序,分析运行结果interfaceIStudent{voidshowDetail();}classStudentimplementsIStudent{Stringname;intage;Student(){}Student(Stringname,intage){this.name=name;this.age=age;}publicvo