• 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;

    }

    }

  • 相关阅读:
    测试签名和验证签名
    自定义mssql的CLR函数
    关于C#的Process的内存相关属性解读
    测试C#发送邮件
    关于wmv视频格式
    练习命名管道的使用
    web中局部滚动条
    C#修改文件的安全属性时报“没有可以设置的标志”
    c#的FileSystemWatcher对象监视文件的变化的事件,无休止的触发事件的解决办法
    为什么要给自己设限?
  • 原文地址:https://www.cnblogs.com/wty1994/p/9319751.html
Copyright © 2020-2023  润新知