多态作业
一、 选择题
1. |
关于Java中的多态,以下说法不正确的为( B )。(选择一项) |
|
|
|
|
|
A |
多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性 |
|
B. |
把子类转换为父类,称为向下转型,自动进行类型转换 |
|
C. |
多态是指同一个实现接口,使用不同的实例而执行不同的操作 |
|
D. |
继承是多态的基础,没有继承就没有多态 |
2. |
编译运行如下Java代码,输出结果是( D )。(选择一项) |
|
|
class Base { public void method(){ System.out.print ("Base method"); } } class Child extends Base{ public void methodB(){ System.out.print ("Child methodB"); } } class Sample { public static void main(String[] args) { Base base= new Child(); base.methodB(); } } |
|
|
|
|
|
A |
Base method |
|
B. |
Child methodB |
|
C. |
Base method Child methodB |
|
D. |
编译错误 |
3. |
在Java中,关于引用数据类型的类型转换说法正确的是( AB )。(选择二项) |
|
|
|
|
|
A |
引用数据类型的类型转换有向上转型和向下转型 |
|
B. |
向下转型,必须转换成其真实子类型,而不能随意转换 |
|
C. |
向下转型是自动进行的,也称隐式转换 |
|
D. |
向上转型可以使用instanceof操作符来判断转型的合法性 |
4. |
给定如下Java程序,Test类中的四个输出语句输出结果依次是( C )。(选择一项) |
|
|
class Person { String name="person"; public void shout(){ System.out.println(name); } } class Student extends Person{ String name="student"; String school="school"; } public class Test { public static void main(String[ ] args) { Person p=new Student(); System.out.println(p instanceof Student); System.out.println(p instanceof Person); System.out.println(p instanceof Object);; System.out.println(p instanceof System); } } |
|
|
|
|
|
A |
true,false,true,false |
|
B. |
false,true,false,false |
|
C. |
true,true,true,编译错误 |
|
D. |
true,true,false,编译错误 |
二、 判断题
- 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( F )
- 继承是多态的基础,没有继承就没有多态。( T )
三、 简答题
- 多态的含义和作用
事物的多种形态就称作多态
多态可以提高代码的扩展性,提高代码的维护性
- 向上转型和向下转型
将父类引用指向子类对象就叫做向上转型
将父类引用类型强制转换成子类引用类型叫做向下转型
有向上转型才会有向下转型
四、 编码题
- 编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
1) 分析培根比萨和海鲜比萨
2) 定义比萨类
3) 属性:名称、价格、大小
4) 方法:展示
5) 定义培根比萨和海鲜比萨继承自比萨类
6) 定义比萨工厂类,根据输入信息产生具体的比萨对象
程序运行结果如图所示
(注:运行结果有问题)
import java.util.Scanner; class TestPizza1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请选择想要制作的披萨:1.培根披萨 2.海鲜披萨"); int i= sc.nextInt(); switch(i){ case 1: BaconPizza p1 = new BaconPizza(); System.out.println("请输入培根克数:"); int gram1= sc.nextInt(); p1.setGram(gram1); System.out.println("请输入披萨大小"); int size1 = sc.nextInt(); p1.setSize(size1); System.out.println("请输入披萨价格"); int price1 = sc.nextInt(); p1.setPrice(price1); p1.print(); break; case 2: SeafoodPizza p2 = new SeafoodPizza(); System.out.println("请输入配料信息:"); String b = sc.next(); p2.setBurdening(b); System.out.println("请输入披萨大小"); int size2 = sc.nextInt(); p2.setSize(size2); System.out.println("请输入披萨价格"); int price2 = sc.nextInt(); p2.setPrice(price2); p2.print(); break; default: System.out.println("请重新输入"); break; } } } class Pizza { String name="披萨"; int price; int size; public Pizza(){} public Pizza(String name,int size,int price) { this.name = name; this.price = price; this.size = size; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setPrice(int price) { this.name = name; } public int getPrice() { return price; } public void setSize(int size) { this.name = name; } public int getSize() { return size; } //public abstract void show(); } class BaconPizza extends Pizza { int gram; public BaconPizza(){} public BaconPizza(String name,int size,int price,int gram) { super(name,size,price); this.gram = gram; } public void setGram(int gram) { this.gram = gram; } public int getGram() { return gram; } public void print() { System.out.println("名称:"+"培根"+getName()); System.out.println("价格:"+getPrice()+"元"); System.out.println("大小:"+getSize()+"寸"); System.out.println("培根克数:"+getGram()); } } class SeafoodPizza extends Pizza { String burdening; public SeafoodPizza(){} public SeafoodPizza(String name,int size,int price,String burdening) { super(name,size,price); this.burdening =burdening; } public void setBurdening(String burdening) { this.burdening = burdening; } public String getBurdening() { return burdening; } public void print() { System.out.println("名称:"+"海鲜"+getName()); System.out.println("价格:"+getPrice()+"元"); System.out.println("大小:"+getSize()+"寸"); System.out.println("配料:"+getBurdening()); } }
五、 可选题
- 编写程序实现软料购买:编写程序,接收用户输入的信息,选择购买的饮料。可供选择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。
程序运行效果如图所示。