7.16LJY

 

多态作业

 

一、 选择题

 

1.

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

 

 

 

 

A

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

 

B.

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

 

C.

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

 

D.

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

 

2.

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

 

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中,关于引用数据类型的类型转换说法正确的是(   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. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( false  )
  2. 继承是多态的基础,没有继承就没有多态。(  true )

 

三、 简答题

  1. 多态的含义和作用

 事物存在的多种形态。         

* B:多态前提

* a:要有继承关系。

* b:要有方法重写

* c:要有父类引用指向子类对象。

 可以当作形式参数,可以接收任意子类对象 Peron p = new Superman();

  1. 向上转型和向下转型

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

向下转型;’SuperMan sm = (SuperMan)p;向下转型 :记住 一定是先有向上转型之后才有向下转型,将父类引用强制转换成子类引用,可以使用子类特有的属性,方法.

 

四、 编码题

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

实现思路及关键代码

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

2) 定义比萨类

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

4) 方法:展示

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

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

程序运行结果如图所示

 

import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想制作的披萨1-培根披萨,2-海鲜披萨");
int i = sc.nextInt();
if (i == 1) {
MeatPizza m = new MeatPizza();
m.in();
m.show();


}else if (i == 2) {
SeaPizza s = new SeaPizza();
s.in();
s.show();
}else System.out.println("输入错误");


}
}

abstract class Pizza {
private String name;
private int price;
private String size;



public Pizza() {
super();

}


public Pizza(String name, int price, String size) {
super();
this.name = name;
this.price = price;
this.size = size;
}

 


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public int getPrice() {
return price;
}


public void setPrice(int price) {
this.price = price;
}


public String getSize() {
return size;
}

 


public void setSize(String size) {
this.size = size;
}

 


public abstract void show() ;


}

class SeaPizza extends Pizza {
String a ;


public SeaPizza() {
super();

}

 

public SeaPizza(String name, int price, String size) {
super(name, price, size);

}

 

public void in() {
System.out.println();
setName("海鲜披萨");

Scanner sc = new Scanner(System.in);

System.out.println("请输入披萨配料");
a = sc.nextLine();



System.out.println("请输入披萨大小");
String s = sc.nextLine();
setSize(s);

System.out.println("请输入价格");
setPrice(sc.nextInt());


}



public void show( ) {
System.out.println("名称:" + "\t " + getName());

System.out.println("价格:" + "\t " +getPrice());

System.out.println("尺寸:"+ "\t " +getSize());

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

}
}

class MeatPizza extends Pizza {
String a ;

public MeatPizza() {
super();

}

 

public MeatPizza(String name, int price, String size) {
super(name, price, size);

}

 

public void in() {
System.out.println();
setName("培根披萨");
Scanner sc = new Scanner(System.in);

System.out.println("请输入培根克数");
a = sc.nextLine();

System.out.println("请输入披萨大小");
String s = sc.nextLine();
setSize(s);

System.out.println("请输入价格");
setPrice(sc.nextInt());


}



public void show( ) {
System.out.println("名称:" + "\t " + getName());

System.out.println("价格:" + "\t " +getPrice());

System.out.println("尺寸:"+ "\t " +getSize());

System.out.println("培根克数:"+ "\t " + a);

}
}

 

 

 

 

 

 

五、 可选题

 

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

程序运行效果如图所示。

 

 




import java.util.Scanner;
class Test1 {
static int Capacity;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请选择饮料: (1 - 矿泉水 2 - 咖啡 3 - 可乐 )");
int i = sc.nextInt();
switch (i) {
case 1: Cap();
Drink w = new Water(Capacity,"矿泉水");
print(w);


break;
case 2:Cap();
Coffee co = new Coffee(Capacity,"咖啡");
co.Function();
System.out.println("你购买的信息如下");
System.out.println(co.getKind());
System.out.println(co.extra);
System.out.println(Capacity);


break;

case 3: Cap();
Drink c = new Cola(Capacity,"可乐");
c.Function();
print(c);

break;
}


}

public static void Cap() {

Scanner sc = new Scanner(System.in);
System.out.println("输入购买容量");
Capacity = sc.nextInt();

}

public static void print(Drink d) {
System.out.println("你购买的信息如下");
if (d.getKind() = "可乐") {
System.out.println(d.getKind());
}
System.out.println(d.getKind());

System.out.println(Capacity);


}


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


abstract
class Drink {
private int capacity;
private String kind;

public Drink() {}

public Drink(int capacity,String kind) {
this.capacity = capacity;
this.kind = kind;

}

public void setCapacity(int Capacity) {
this.capacity = Capacity;

}

public int getCapacity() {
return capacity;

}

public void setKind(String Capacity) {
this.kind = kind;

}

public String getKind() {
return kind;

}

public abstract void Function();
}

 

class Water extends Drink{
public Water() {}

public Water(int capacity , String kind) {
super(capacity , kind);

}

public void Function(){};

}

class Coffee extends Drink {
String extra;
public Coffee() {}

public Coffee(int capacity,String kind) {
super(capacity,kind);

}

public void Function() {
Scanner sc = new Scanner(System.in);
System.out.println("请问是否要加配料: (1 - 加糖 2 - 加奶 3 - 什么也不加)");
int i = sc.nextInt();
if (i == 1) {
extra = "加糖";
}else if (i == 2) {
extra = "加奶";

}else extra = "什么也不加";


}

 

}

class Cola extends Drink {
public Cola() {}

public Cola(int capacity,String kind) {
super(capacity,kind);

}

public void Function() {
Scanner sc = new Scanner(System.in);
System.out.println("选择可乐: (1 - 可口可乐 2 - 百事可乐 )");
int i = sc.nextInt();
if (i == 1) {

setKind("可口可乐");

}else if (i == 2) {
setKind("百事可乐");

}else System.out.println("输入错误");


}

 

}

 

posted on 2018-07-16 17:24  黑的发白  阅读(191)  评论(0编辑  收藏  举报

导航