9、多态作业

多态作业

一、选择题

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

二、判断题
1.将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( F )
2.继承是多态的基础,没有继承就没有多态。( T )

三、简答题
1.多态的含义和作用
答:子类继承父类,重写父类中的方法,父类引用指向子类的对象,这就是多态。
作用:大大提高了程序的可复用性。
2.向上转型和向下转型
答:向上转型指的是子类对象向父类对象进行转换;向下转型指的是父类对象指向子类对象。
四、编码题
1.编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
1)分析培根比萨和海鲜比萨
2)定义比萨类
3)属性:名称、价格、大小
4)方法:展示
5)定义培根比萨和海鲜比萨继承自比萨类
6)定义比萨工厂类,根据输入信息产生具体的比萨对象
程序运行结果如图所示
在这里插入图片描述
在这里插入图片描述

五、可选题

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

多态作业答案

一、选择题

1.B
2.D
3.AB
4.C

二、判断题

1.×
2.√

三、简答题

答案略

四、编码题

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

/**
 * 定义抽象类
*/
public abstract class Pizza {
	private String name;
	private int price;
	private int size;
	
	public Pizza() {
		super();
	}
	public Pizza(String name, int price, int 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 int getSize() {
		return size;
	}
	public void setSize(int size) {
		this.size = size;
	}
	public abstract void  show();
		 	 
}
/**
 * 培根比萨
*/
public class BaconPizza extends Pizza{
	private int gram;//克数		
	public BaconPizza() {
		super();
	}
	public BaconPizza(String name, int price, int size, int gram) {
		super(name, price, size);
		this.gram = gram;
	}
	public int getGram() {
		return gram;
	}
	public void setGram(int gram) {
		this.gram = gram;
	}
	public void show() {
		System.out.println("名称:"+super.getName());
		System.out.println("价格:"+super.getPrice()+"元");
		System.out.println("大小:"+super.getSize()+"寸");
		System.out.println("培根克数:"+this.gram);		
	}
}
/**
 * 海鲜比萨
*/
public class SeaFoodPizza extends Pizza{
	private String mixture;//配料	
	public SeaFoodPizza() {
		super();
	}
	public SeaFoodPizza(String name, int price, int size, String mixture) {
		super(name, price, size);
		this.mixture = mixture;
	}
	public String getMixture() {
		return mixture;
	}
	public void setMixture(String mixture) {
		this.mixture = mixture;
	}
	@Override
	public void show() {		
		System.out.println("名称:"+super.getName());
		System.out.println("价格:"+super.getPrice()+"元");
		System.out.println("大小:"+super.getSize()+"寸");
		System.out.println("配料:"+this.mixture);	
	}
}
/**
 * 比萨制作
*/
public class PizzaFactory {
	public static Pizza makePizza(){
		System.out.println("请选择想要制作的比萨(1.培根比萨 2.海鲜比萨):");
		Scanner scanner = new Scanner(System.in);
		int i = scanner.nextInt();
		Pizza pizza = null;		
		if(i==1){
			//制作培根比萨
			System.out.println("请输入培根克数:");
			int gram = scanner.nextInt();			
			System.out.println("请输比萨大小:");
			int size =  scanner.nextInt();			
			System.out.println("请输入比萨价格:");
			int price =  scanner.nextInt();					
			pizza = new BaconPizza("培根比萨", price, size, gram);			
		}else if(i==2){
			//制作海鲜比萨
			System.out.println("请输入配料信息:");
			String mixture  =  scanner.next();
			
			System.out.println("请输比萨大小:");
			int size =  scanner.nextInt();
			
			System.out.println("请输入比萨价格:");
			int price =  scanner.nextInt();
			pizza = new SeaFoodPizza("海鲜比萨", price, size, mixture);
		}
		return pizza;
	}	
	public static void main(String[] args) {
		Pizza p = makePizza();
		pshow();
	}
}

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

//饮料类
public class Drink {
	private String name;
	private int volume;
	public Drink() {
		super();
	}
	public Drink(String name, int volume) {
		super();
		this.name = name;
		this.volume = volume;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getVolume() {
		return volume;
	}
	public void setVolume(int volume) {
		this.volume = volume;
	}	
	public void show(){
		System.out.println("您购买的饮料信息如下:");
		System.out.println("名称:"+name);
		System.out.println("容量:"+volume);		
	}	
}
//咖啡类
public class Coffee extends Drink{
	private String mixture;//添加物
	public Coffee() {
		super();
	}
	public Coffee(String name,int volume, String mixture) {
		super(name,volume);
		this.mixture = mixture;
	}	
	public String getMixture() {
		return mixture;
	}
	public void setMixture(String mixture) {
		this.mixture = mixture;
	}
	public void show(){
		System.out.println("您购买的饮料信息如下:");
		System.out.println("名称:"+super.getName());
		System.out.println("添加配料:"+this.getMixture());
		System.out.println("容量:"+super.getVolume());		
	}	
}
 //饮料工厂类
public class DrinkFactory {
	public  static Drink getDrink(String no){
		Scanner input = new Scanner(System.in);
		Drink drink = null;
		if("1".equals(no)){
			System.out.println("请输入购买容量:");
			int volume = input.nextInt();
			System.out.println("请问是否要配料(1、加糖 2、加奶 3、什么也不加)");
			int choice = input.nextInt();
			String mixture;
			switch(choice){
			case 1: mixture ="加糖";break;
			case 2: mixture ="加奶";break;
			default : mixture="什么一个不加";
			}
			drink = new Coffee("咖啡",volume, mixture);
		}else if("2".equals(no)){
			//省略			
		}else if("3".equals(no)){
			//省略		}
		return drink;
	}
}
//测试类
public class TestDrink {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请选择饮料(1.咖啡  2 矿泉水  3 可乐):");
		String choice = input.next();
		Drink drink = DrinkFactory.getDrink(choice);
		drink.show();		
	}
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
1. 什么是Java头歌接口? Java头歌接口是一种特殊的Java类,它只包含常量和抽象方法的定义。常量和抽象方法必须使用关键字“public”进行修饰,而且接口中的方法都是抽象方法,没有方法体。 2. Java头歌接口有什么用处? Java头歌接口主要有以下两个用途: (1) 定义规范:接口定义了一种规范,让其他类知道该如何与它进行交互。 (2) 多态应用:接口允许多个类实现同一个接口,从而可以通过一个接口变量引用不同的实现类对象,实现多态。 3. 什么是多态多态是指同一个接口可以有不同的实现方式。在Java中,多态是通过继承和接口实现的。 4. 多态有什么作用? 多态的主要作用在于可以提高代码的可维护性和可扩展性。通过多态,我们可以在不改变原有代码的情况下,动态地替换某个对象的行为,从而实现代码的灵活性和可扩展性。 5. 请用Java头歌接口和多态实现一个图形计算器,能够计算不同形状的面积。 以下是示例代码: ``` interface Shape { double getArea(); // 计算面积 } class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } } class Rectangle implements Shape { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } public double getArea() { return width * height; } } public class Calculator { public static void main(String[] args) { Shape circle = new Circle(5); Shape rectangle = new Rectangle(2, 3); System.out.println("Circle Area: " + circle.getArea()); System.out.println("Rectangle Area: " + rectangle.getArea()); } } ``` 在上述代码中,我们定义了一个Shape接口,包含一个getArea()方法,用于计算面积。然后我们定义了两个实现了该接口的类:Circle和Rectangle。最后在主函数中,我们定义了两个Shape类型的变量,分别指向Circle和Rectangle对象,通过调用getArea()方法计算了它们的面积。由于Shape类型是一个接口类型,因此我们可以通过该类型变量引用不同的实现类对象,实现多态

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友培

数据皆开源!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值