面向对象程序设计II(Java)实验报告(1)-复习
编程题

  1. 类的继承(编程题)
    要求:

(1)定义一个基类Shape,包含受保护的成员变量radius,及其相应的get/set方法,以及一个包含有一个参数的构造器;

(2)定义基类的派生类,圆柱类Cylinder,加入一个新的私有变量height,及其相应的get/set方法,以及一个包含有两个参数的构造器;并创建一个公有的成员方法volume,能够计算并返回圆柱体的体积。

主函数中的内容如下:

Cylinder c = new Cylinder(1,1);

System.out.println(c.volume());

提示: 圆柱体体积的计算公式为 3.14半径的平方

class Shape {
  private int radius;

  public int getRadius() {
    return radius;
  }

  public void setRadius(int radius) {
    this.radius = radius;
  }

  public Shape(int radius) {
    this.radius = radius;
  }
}

class Cylinder extends Shape {
  private int height;

  public Cylinder(int radius) {
    super(radius);
  }

  public Cylinder(int radius, int height) {
    super(radius);
    this.height = height;
  }

  public int getHeight() {
    return height;
  }

  public void setHeight(int height) {
    this.height = height;
  }

  public double volume() {
    return 3.14 * getHeight() * getRadius() * getRadius();
  }
}

public class demo {
  public static void main(String[] args) {
    Cylinder c = new Cylinder(1, 1);
    System.out.println(c.volume());
  }
}

面向对象程序设计II(Java)实验报告(1)-复习
程序片段编程题

  1. 士兵与枪(抽象类与抽象方法)
    【问题描述】编写程序实现士兵使用枪支射击。士兵使用不同的枪支从而发出不同的声音。可以使用的枪支包括M24、Kar98和M416。主方法中,给士兵不同的枪支让他使用。

士兵为Soldier类,包含useGun方法。

枪支为抽象类Gun,包含抽象方法fire方法

M24、Kar98和M416的类都继承自Gun类,并实现了fire方法。

如:M24能发出”ka”的声音,即打印出”ka”;

Kar98能发出”tu”的声音,而M416能发出”dong”的声音。

提示:一个源文件中只能有一个类使用public修饰

public  class  Soldier
{
  //  useGun方法,调用Gun引用的fire方法。

  private void useGun(Gun gun1) {
    gun1.fire();
  }

  public  static  void  main(String[]  args)
  {
    Soldier  soldier  =  new  Soldier();
    //  Gun引用类型指向Kar98的对象
    //  士兵使用useGun使用该对象
    Gun  gun1  =  new  Kar98();
    soldier.useGun(gun1);
    //  Gun引用类型指向M24的对象
    //  士兵使用useGun使用该对象
    Gun  gun2  =  new  M24();
    soldier.useGun(gun2);
    //  Gun引用类型指向M416的对象
    //  士兵使用useGun使用该对象
    Gun  gun3  =  new  M416();
    soldier.useGun(gun3);
  }

}


//  定义抽象类Gun    其包含一个抽象方法fire
abstract class Gun{
  abstract void fire();
}

//  Kar98类继承Gun类,并重写fire方法
class Kar98 extends Gun {

  @Override
  void fire() {
    System.out.println("tu");
  }
}

//M24类继承Gun类,并重写fire方法
class M24 extends Gun{

  @Override
  void fire() {
    System.out.println("ka");
  }
}

//M416类继承Gun类,并重写fire方法
class M416 extends Gun {

  @Override
  void fire() {
    System.out.println("dong");
  }
}

实验作业2 集合
A B D C
【问题描述】遍历ArrayList。

常见的遍历ArrayList的几种方法:

第一种遍历方法:使用增强型foreach语句遍历List

第二种遍历方法:把ArrayList转换为数组,然后对数组进行遍历

第三种遍历方法:使用Iterator迭代器接口进行相关遍历

import java.util.*;

public class demo {
  public static void main(String[] args) {
    //创建了一个ArrayList对象:list
    List<String> list = new ArrayList<>();
    //向list中添加元素
    list.add("Hello");
    list.add("World");
    list.add("HaHaHaHa");

    //第一种遍历方法使用增强型foreach语句遍历List
    for (String str : list) {
      System.out.println(str);
    }

    //第二种遍历,把ArrayList转换为数组,然后对数组进行遍历
    String[] strArray = new String[list.size()];
    list.toArray(strArray);
    for (int i = 0; i < strArray.length; i++) {
      System.out.println(strArray[i]);
    }

    //第三种遍历  使用Iterator迭代器接口进行遍历
    Iterator<String> it = list.iterator();
    while (it.hasNext()
    )//判断下一个元素之后有值
    {
      System.out.println(it.next());
    }

  }
}