0716作业

 

多态作业

 

一、 选择题

 

1.

关于Java中的多态,以下说法不正确的为()。(选择一项)

 

 

 

 

A

多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性

 

B.

把子类转换为父类,称为向下转型,自动进行类型转换

 

C.

多态是指同一个实现接口,使用不同的实例而执行不同的操作

 

D.

继承是多态的基础,没有继承就没有多态

 

2.

编译运行如下Java代码,输出结果是(   B  )。(选择一项)

 

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

 

 

 

 

A

引用数据类型的类型转换有向上转型和向下转型

 

B.

向下转型,必须转换成其真实子类型,而不能随意转换

 

C.

向下转型是自动进行的,也称隐式转换

 

D.

向上转型可以使用instanceof操作符来判断转型的合法性

 

 

4.

给定如下Java程序,Test类中的四个输出语句输出结果依次是( A   )。(选择一项)

 

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. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。(  ✖ )
  2. 继承是多态的基础,没有继承就没有多态。(  ✔ )

 

三、 简答题

  1. 多态的含义和作用

多态的含义:事物存在的多种形态。

指的是一个事物,在不同时刻状态的一个提现

多态的作用:提高了代码的维护性
        提高了代码的扩展性

  1. 向上转型和向下转型

向上转型 :父类引用指向子类对象就是向上转型;

向下转型 :先有向上转型之后才有向下转型

 

四、 编码题

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

实现思路及关键代码

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

2) 定义比萨类

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

4) 方法:展示

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

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

程序运行结果如图所示

 

 

 

import java.util.Scanner;//导包

class Task1_Pizza {

public static void main(String[] args) {

Scanner sc= new Scanner(System.in);

System.out.print("请输入想要制作的比萨(1.培根比萨 2.海鲜比萨)");

int i=sc.nextInt();

if(i==1){

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

int g=sc.nextInt();

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

String size=sc.next();

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

int price=sc.nextInt();

Pizza n=new BaconPizza("培根披萨", price, size);

((BaconPizza) n).name();

((BaconPizza) n).price();

((BaconPizza) n).size();

System.out.println("培根克数:"+g);

}

if(i==2){

System.out.println("请输入配料信息:");

Scanner sc1=new Scanner(System.in);

String a=sc1.next();

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

String size=sc1.next();

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

int price=sc1.nextInt();

SeafoodPizza n=new SeafoodPizza("海鲜比萨", price, size);

n.name();

n.price();

n.size();

System.out.println("配料:"+a);

}

}

}

//属性:名称name、价格price、大小size

class Pizza {

String name;

int price;

String size;

public Pizza(String name,int price,String size){

this.name=name;

this.price=price;

this.size=size;

}

}

//培根比萨

class BaconPizza extends Pizza {

double g;

public BaconPizza(String name,int price,String size){

super(name,price,size);

}

public void name(){

System.out.println("名称:"+name);

}

public void price(){

System.out.println("价格:"+price+"");

}

public void size(){

System.out.println("大小:"+size+"");

}

public void g(){

System.out.println("培根克数:"+g);

}

}

//海鲜比萨

class SeafoodPizza extends Pizza{

String dosing;

public SeafoodPizza(String name,int price,String size){

     super(name, price, size);

}

public void name(){

System.out.println("名称:"+name);

}

public void price(){

System.out.println("价格:"+price+"");

}

public void size(){

System.out.println("尺寸:"+size+"");

}

public void dosing(){

System.out.println("配料:"+dosing);

}

}

 

 

 

 

五、 可选题

 

  1. 编写程序实现软料购买:编写程序,接收用户输入的信息,选择购买的饮料。可供选择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。

程序运行效果如图所示。

 

import java.util.Scanner;

 

public class Task2_Drinks {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请选择:1.咖啡,2.矿泉水,3.可乐");

switch (sc.nextInt()) {

case 1:

System.out.println("请输入购买的容量:");

Coffee c = new Coffee();

c.volume = sc.next();

c.name = "咖啡";

System.out.println("请选择配料:1.加糖,2.加奶,3.什么都不加");

switch (sc.nextInt()) {

case 1:

c.setPl("加糖");

break;

case 2:

c.setPl("加奶");

break;

case 3:

c.setPl("什么都不加");

break;

}

c.info();

break;

case 2:

System.out.println("请输入购买的容量:");

Water w = new Water();

w.volume = sc.next();

w.name = "矿泉水";

w.info();

break;

case 3:

System.out.println("请输入购买的容量:");

Cola co = new Cola();

co.volume = sc.next();

co.name = "可乐";

System.out.println("请选择品牌:1.可口可乐,2.百事可乐");

switch (sc.nextInt()) {

case 1:

co.setPp("可口可乐");

break;

case 2:

co.setPp("百事可乐");

break;

}

co.info();

break;

}

}

}

 

abstract class Drink {

String name;

String volume;

public abstract void info();

}

 

class Coffee extends Drink{

private String pl;

 

public void info() {

System.out.println("名称:"+name);

System.out.println("配料:"+pl);

System.out.println("容量:"+volume);

}

 

public String getPl() {

return pl;

}

 

public void setPl(String pl) {

this.pl = pl;

}

 

 

 

}

 

class Water extends Drink{

 

public void info() {

System.out.println("名称:"+name);

System.out.println("容量:"+volume);

}

 

}

 

 

class Cola extends Drink {

private String pp;

 

public void info() {

System.out.println("名称:"+name);

System.out.println("品牌:"+pp);

System.out.println("容量:"+volume);

}

 

public String getPp() {

return pp;

}

 

public void setPp(String pp) {

this.pp = pp;

}

 

}

 

posted on 2018-07-16 19:40  三冬暖  阅读(347)  评论(0编辑  收藏  举报