多态作业
<p align="center">多态作业 一、??? 选择题 <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">???????? public void 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">???????? public void methodB(){
<p align="left">????????????????? System.out.print ("Child methodB");
<p align="left">???????? }
<p align="left">}
<p align="left">class Sample {
<p align="left">???????? public static void 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">???????? public void 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">public class Test {
<p align="left">???????? public static void 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,编译错误 二、??? 判断题- 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。(? F )
- 继承是多态的基础,没有继承就没有多态。(? T )
三、??? 简答题
- 多态的含义和作用
多态:是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来,再通过这个抽象的事物,与不同的具体事物进行对话。
作用:可以提高代码的灵活性和扩展性,可以提高可扩充性和可维护性。
- 向上转型和向下转型
向上转型:父类的引用指向子类的对象
??? ? ? 向下转型:把父类引用执行的子类对象强制转为子类类型
??? ?? ??? 注意:无论是基本类型还是引用类型,小转大都是自动的,大转小都是强制的,
四、??? 编码题
- 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
实现思路及关键代码
1)?????? 定义乐器类Instrument,包括方法makeSound()
2)?????? 定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin
3)?????? 定义乐手类Musician,可以弹奏各种乐器play(Instrument i)
4)?????? 定义测试类,给乐手不同的乐器让他弹奏
2.编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
1)?????? 分析培根比萨和海鲜比萨
2)?????? 定义比萨类
3)?????? 属性:名称、价格、大小
4)?????? 方法:展示
5)?????? 定义培根比萨和海鲜比萨继承自比萨类
6)?????? 定义比萨工厂类,根据输入信息产生具体的比萨对象