• 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("名称:" + " " + getName());

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

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

    System.out.println("配料:"+ " " + 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("名称:" + " " + getName());

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

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

    System.out.println("培根克数:"+ " " + 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("输入错误");


    }

    }

  • 相关阅读:
    G
    C
    B
    B
    线段树模板
    网络流模板
    POJ_1631_Bridging_Signals_(动态规划,LIS)
    POJ_1065_Wooden_Sticks_(动态规划,LIS+鸽笼原理)
    BZOJ_1015_星球大战_[JSOI2008]_(并查集)
    POJ_3280_Cheapest_Palindrome_(动态规划)
  • 原文地址:https://www.cnblogs.com/lijuenyi/p/9318778.html
Copyright © 2020-2023  润新知