Contest1398 – 【Java程序设计】第四次作业【课程组】

发布于 2024-04-12  556 次阅读


Contest1398 - 【Java程序设计】第四次作业【课程组】

A : [OJ2047]Java习题:类的重用、接口设计及其应用

import java.util.Scanner;

// 定义抽象类Door,包括:code(int)、material(String)、带参数的构造方法、抽象方法void open()。
abstract class Door{
    int code;
    String material;

    public Door(int code, String material){
        this.code = code;
        this.material = material;
    }

    abstract void open();
}

// 定义接口ISafe,其中void checkFace()方法表示人脸识别,void checkFinger()方法表示指纹识别。
interface ISafe{
    public void checkFace();
    public void checkFinger();

}

// 定义子类SafeDoor继承Door并实现ISafe接口
class SafeDoor extends Door implements ISafe{

    //定义有参的构造方法,参数包括:code,  material, safeLevel
    // 要求设计带参数的构造方法,并调用父类带参数的构造方法
    int safeLevel;

    public SafeDoor(int code, String material, int safeLevel){
        super(code, material);
        this.safeLevel = safeLevel;
    }

    // 实现接口中的checkFace()方法,打印输出:"人脸识别"
    public void checkFace(){
        System.out.println("人脸识别");
    }

    // checkFinger()方法,打印输出:"指纹识别"
    public void checkFinger(){
        System.out.println("指纹识别");
    }

    // 同时设计 public void open()方法
    // 当 safeLevel==1时,输出当前对象的材质和安全级别,并调用checkFace()方法,
    // 当safeLevel==2时, 输出当前对象的材质和安全级别,调用checkFace()和checkFinger()两个方法。
    public void open(){
        System.out.println("材质=" + material + " 安全级别=" + safeLevel);

        if (safeLevel == 1){
            checkFace();
        }
        else if (safeLevel == 2){
            checkFace();
            checkFinger();
        }
    }

}

public class Main {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int code1;
        String material1;
        int safeLevel1;

        int code2;
        String material2;
        int safeLevel2;

        //输入两组数据,分别表示门的编号、材质和安全级别
        //输入格式如:
        // 1 木质 1
        // 2 铝合金 2
        code1 = input.nextInt();
        material1 = input.next();
        safeLevel1 = input.nextInt();

        code2 = input.nextInt();
        material2 = input.next();
        safeLevel2 = input.nextInt();

        //定义数组doors存储两个Door的实例,遍历数组并执行数组元素的open方法。
        //用输入信息,对数组中的两个元素进行实例化
        Door[] doors = new Door[2];

        doors[0] = new SafeDoor(code1, material1, safeLevel1);
        doors[1] = new SafeDoor(code2, material2, safeLevel2);

        //遍历数组doors中的元素,并调用其open()方法。
        for (Door door:doors){
            door.open();
        }

    }

}