多态作业及答案

这篇博客探讨了多态在Java编程中的应用,包括选择题、判断题和编程实例,如比萨制作和饮料购买。通过这些例子,解释了多态的基本概念、作用,如提高代码复用性和可扩展性,并展示了如何使用多态实现不同类型的比萨和饮料对象的创建与操作。
摘要由CSDN通过智能技术生成

 

多态作业

 

一、 选择题

 

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中,关于引用数据类型的类型转换说法正确的是( a b   )。(选择二项)

 

 

 

 

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,编译错误

 

二、 判断题

1. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( cuo  )

2. 继承是多态的基础,没有继承就没有多态。( dui  )

 

三、 简答题

1. 多态的含义和作用

2. 子类继承父类,子类对象对父类对象进行重写,父类引用指向子类对象这三个条件前提下父类引用对子类方法中重写方法的调用,“一个接口,多种实现”。

3. 作用:1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承
2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,以前需要用switch实现

4. 向上转型和向下转型

5. 向上转型:通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。

6. 向下转型:将父类对象指向子类对象

 

四、 编码题

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

实现思路及关键代码

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

2) 定义比萨类

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

4) 方法:展示

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

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

程序运行结果如图所示

                                                        

 

 

 

package cn.factory;

 

import java.util.Scanner;

 

public class BaconPizza extends Pizza {

static int num;

BaconPizza(){

this.setName("培根比萨");

}

   public void show(){

System.out.println("名称: "+this.getName()+"\n价格: "+this.getPrice()+"元\n大小: "+

    this.getSise()+"\n培根克数: "+BaconPizza.num);

}

 

}

 

package cn.factory;

 

import java.util.Scanner;

 

public class SeaPizza extends Pizza {

static String mix;

    SeaPizza(){

this.setName("海鲜比萨");

}

public void show(){

System.out.println("名称: "+this.getName()+"\n价格: "+this.getPrice()+"元\n大小: "+

    this.getSise()+"寸\n配料: "+SeaPizza.mix);

}

}

package cn.factory;

 

import java.util.Scanner;

 

public class Pizza {

private String name;

private double price;

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

public double getPrice() {

return price;

}

 

public void setPrice(double price) {

this.price = price;

}

 

public double getSise() {

return sise;

}

 

public void setSise(double sise) {

this.sise = sise;

}

 

private double sise;

public void show(){

}

}

package cn.factory;

 

import java.util.Scanner;

 

public class PizzaFactory {

public static Pizza createPizza(int which){

Pizza p=null;

if(which==1){

p=new BaconPizza();

Scanner sc=new Scanner(System.in);

System.out.println("请输入培根克数: ");

BaconPizza.num=sc.nextInt();

System.out.println("请输入比萨大小: ");

p.setSise(sc.nextInt());

System.out.println("请输入比萨价格: ");

p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值