加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

多态作业

发布时间:2020-12-14 06:33:17 所属栏目:Java 来源:网络整理
导读:p align="center" 多态作业 一、??? 选择题 table style="width: 714px" border="0" cellspacing="0" cellpadding="0" tr td valign="top" width="53" p align="left" 1. /td td colspan="2" valign="top" width="661" p align="left" 关于 Java 中的多态,

<tr>
<td valign="top" width="53">
<p align="left">1.


</td>
<td colspan="2" valign="top" width="661">
<p align="left">关于Java中的多态,以下说法不正确的为(?? B )。(选择一项)


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">?


</td>
<td valign="top" width="611">
<p align="left">?


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">A


</td>
<td valign="top" width="611">
<p align="left">多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">B.


</td>
<td valign="top" width="611">
<p align="left">把子类转换为父类,称为向下转型,自动进行类型转换


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">C.


</td>
<td valign="top" width="611">
<p align="left">多态是指同一个实现接口,使用不同的实例而执行不同的操作


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">D.


</td>
<td valign="top" width="611">
<p align="left">继承是多态的基础,没有继承就没有多态


</td>
</tr>

<table style="width: 714px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="53">
<p align="left">2.


</td>
<td colspan="2" valign="top" width="661">
<p align="left">编译运行如下Java代码,输出结果是(? D?? )。(选择一项)


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td colspan="2" valign="top" width="661">
<p align="left">class Base {


<p align="left">???????? publicvoid method(){


<p align="left">????????????????? System.out.print ("Base method");


<p align="left">???????? }


<p align="left">}


<p align="left">class Child extends Base{?


<p align="left">???????? publicvoid methodB(){


<p align="left">????????????????? System.out.print ("Child methodB");


<p align="left">???????? }


<p align="left">}


<p align="left">class Sample {


<p align="left">???????? publicstaticvoid main(String[] args) {


<p align="left">????????????????? Base base= new Child();


<p align="left">????????????????? base.methodB();


<p align="left">???????? }


<p align="left">}


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">?


</td>
<td valign="top" width="611">
<p align="left">?


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">A


</td>
<td valign="top" width="611">
<p align="left">Base method


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">B.


</td>
<td valign="top" width="611">
<p align="left">Child methodB


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">C.


</td>
<td valign="top" width="611">
<p align="left">Base method


<p align="left">Child methodB


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">D.


</td>
<td valign="top" width="611">
<p align="left">编译错误


</td>
</tr>

<table style="width: 714px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="53">
<p align="left">3.


</td>
<td colspan="2" valign="top" width="661">
<p align="left">Java中,关于引用数据类型的类型转换说法正确的是(?? ,AB )。(选择二项)


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">?


</td>
<td valign="top" width="611">
<p align="left">?


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">A


</td>
<td valign="top" width="611">
<p align="left">引用数据类型的类型转换有向上转型和向下转型


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">B.


</td>
<td valign="top" width="611">
<p align="left">向下转型,必须转换成其真实子类型,而不能随意转换


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">C.


</td>
<td valign="top" width="611">
<p align="left">向下转型是自动进行的,也称隐式转换


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">D.


</td>
<td valign="top" width="611">
<p align="left">向上转型可以使用instanceof操作符来判断转型的合法性


</td>
</tr>

Parent p = new Child();

<table style="width: 714px" border="0" cellspacing="0" cellpadding="0">


<tr>
<td valign="top" width="53">
<p align="left">4.


</td>
<td colspan="2" valign="top" width="661">
<p align="left">给定如下Java程序,Test类中的四个输出语句输出结果依次是(?? C )。(选择一项)


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td colspan="2" valign="top" width="661">
<p align="left">class Person {


<p align="left">???????? String name="person";


<p align="left">???????? publicvoid shout(){


<p align="left">????????????????? System.out.println(name);


<p align="left">???????? }


<p align="left">}


<p align="left">class Student extends Person{


<p align="left">???????? String name="student";


<p align="left">???????? String school="school";


<p align="left">}


<p align="left">publicclass Test {


<p align="left">???????? publicstaticvoid main(String[ ] args) {


<p align="left">????????????????? Person p=new Student();


<p align="left">????????????????? System.out.println(p instanceof Student);


<p align="left">????????????????? System.out.println(p instanceof Person);


<p align="left">????????????????? System.out.println(p instanceof Object);;


<p align="left">????????????????? System.out.println(p instanceof System);


<p align="left">???????? }


<p align="left">}


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">?


</td>
<td valign="top" width="611">
<p align="left">?


</td>
</tr>
<tr>
<td valign="top" width="53">
<p align="left">?


</td>
<td valign="top" width="50">
<p align="left">A


</td>
<td valign="top" width="611">

true,false,true,false

B.

C.

true,编译错误

D.

true,编译错误

二、??? 判断题

  1. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。(? F )
  2. 继承是多态的基础,没有继承就没有多态。(? T )

三、??? 简答题

  1. 多态的含义和作用

  多态:是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来,再通过这个抽象的事物,与不同的具体事物进行对话。

  作用:可以提高代码的灵活性和扩展性,可以提高可扩充性和可维护性。

  1. 向上转型和向下转型

    向上转型:父类的引用指向子类的对象

??? ?  ? 向下转型:把父类引用执行的子类对象强制转为子类类型

??? ?? ??? 注意:无论是基本类型还是引用类型,小转大都是自动的,大转小都是强制的,

四、??? 编码题

  1. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。

  实现思路及关键代码

  1)?????? 定义乐器类Instrument,包括方法makeSound()

  2)?????? 定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin

  3)?????? 定义乐手类Musician,可以弹奏各种乐器play(Instrument i)

  4)?????? 定义测试类,给乐手不同的乐器让他弹奏

System.out.println("乐器发出美妙的声音!" Erhu System.out.println("二胡拉响人生" Piano System.out.println("钢琴美妙无比" Violin System.out.println("小提琴来啦" Instrument in = Instrument i = Instrument ins = }

  2.编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。

  实现思路及关键代码

  1)?????? 分析培根比萨和海鲜比萨

  2)?????? 定义比萨类

  3)?????? 属性:名称、价格、大小

  4)?????? 方法:展示

  5)?????? 定义培根比萨和海鲜比萨继承自比萨类

  6)?????? 定义比萨工厂类,根据输入信息产生具体的比萨对象

Pizza(String name, price, .name = .price = .size = .name = setPrice( .price = setSize( .size = BaconPizza BaconPizza(String name, size, .gram = setGram( .gram = System.out.println("名称:"+ System.out.println("价格:"+.getPrice()+"元" System.out.println("大小:"+.getSize()+"寸" System.out.println("培根克数:"+.gram+"克" SeaPizza SeaPizza(String name, .burdening = .burdening = System.out.println("名称:" + System.out.println("价格:" + .getPrice() + "元" System.out.println("大小:" + .getSize() + "寸" System.out.println("配料:" + Scanner sc = System.out.println("请选择想要制作的披萨(1.培根披萨 ;2.海鲜披萨)" num = (num==1 System.out.println("请输入培根克数:" gram = System.out.println("请输入披萨大小:" size = System.out.println("请输入披萨价格:" price = Pizza p = BaconPizza b = p.setName("培根披萨" System.out.println("n" } (num==2 System.out.println("请输入配料信息:" String burdening = System.out.println("请输入披萨大小:" size = System.out.println("请输入披萨价格:" price = Pizza p = SeaPizza s = p.setName("海鲜披萨" System.out.println("n" } System.out.println("您输入的数字错误!" Factory f = }

五、??? 可选题

  1. 编写程序实现软料购买:编写程序,接收用户输入的信息,选择购买的饮料。可供选择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。
Drinks(String name,String burdening, .name = .burdening = .ml = .name = .burdening = setMl( .ml = System.out.println("您购买饮料的信息如下:" ? Coffee System.out.println("您购买饮料的信息如下:" System.out.println("名称:"+ System.out.println("添加配料:"+ System.out.println("容量:"+ Water System.out.println("您购买饮料的信息如下:" System.out.println("名称:"+ System.out.println("添加配料:"+ System.out.println("容量:"+ Cola System.out.println("您购买饮料的信息如下:" System.out.println("名称:"+ System.out.println("添加配料:"+ System.out.println("容量:"+ Scanner sc = System.out.println("请选择饮料:1.咖啡;2.矿泉水;3.可乐" num = (num == 1 System.out.println("请输入购买容量:" ml = System.out.println("请问是否需要添加配料:1.加糖;2.加奶;3.什么都不加" n = (n==1 Drinks d = d.setBurdening("加糖" d.setName("咖啡" } (n==2 Drinks d = d.setBurdening("加奶" d.setName("咖啡" } Drinks d = d.setBurdening("无" d.setName("咖啡" } (num==2 System.out.println("请输入购买容量:" ml = Drinks d = d.setName("矿泉水" d.setBurdening("无" } (num==3 System.out.println("请问需要百事可乐还是可口可乐:1.百事可乐;2.可口可乐" n = (n==1 System.out.println("请输入购买容量:" ml1 = Drinks d = d.setName("百事可乐" d.setBurdening("无" } System.out.println("请输入购买容量:" ml1 = Drinks d = d.setName("可口可乐" d.setBurdening("无" } System.out.println("数字输入错误!请从新输入!" Store s= }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

<p align="center">多态作业

一、??? 选择题

<table style="width: 714px" border="0" cellspacing="0" cellpadding="0">

    推荐文章
      热点阅读