Java 1학년

[Java 1학년] 객체 지향 / 상속

양상추상츄 2021. 10. 5. 22:05

Main.java

 

public class Main {
    public static void main(String[] args) {
        int quizNum = 5;
        CalcQuiz[] quiz = new CalcQuiz[quizNum];
        
        for(int i=0; i<quizNum; i++){
            quiz[i]=new BinkanQuiz();
        }
        
        for(int i=0; i<quizNum; i++){
            System.out.println("문제"+i+":"+quiz[i].getQuestion()); //상속받은 getQuestion()
        }
        
        System.out.println("-------------------------------------");
        
        for(int i=0; i<quizNum; i++){
            System.out.println("문제"+i+":"+quiz[i].getAnswer()); //상속받은 getAnswer()
        }
    }
}


CalcQuiz.java

 

import java.util.Random;
class CalcQuiz { //계산 문제를 1개 만드는 클래스
    String question; // 문제를 저장할 필드
    String answer; // 답을 저장할 필드
    
    CalcQuiz() {
        createQuestion();
    }
    
    void createQuestion(){
        Random rnd = new Random();
        int a = rnd.nextInt(100);
        int b = rnd.nextInt(100);
        this.question = a + "x" + b + "=?";
        this.answer = Integer.toString(a * b);
    }
    
    String getQuestion() {
        return this.question; //문제를 알려주는 메소드
    }
    
    String getAnswer() {
        return this.answer; //답을 알려주는 메소드
    }
}


BinkanQuiz.java

 

import java.util.Random;
class BinkanQuiz extends CalcQuiz {
    BinkanQuiz(){
        createQuestion();
    }
    void createQuestion() {
        Random rnd = new Random();
        int dan = rnd.nextInt(10); // 몇단인가
        int qID = rnd.nextInt(10); // 문제
        this.question =""; // CalcQuiz()을 초기화 해주지않으면 값이 Main에서 같이 뒤섞여버림
        this.answer ="";
        
        for(int i=0; i<10; i++) {
            if(i == qID) {
                 this.question += "[O]";
            } else {
                this.question += "["+(dan*i)+"]";
            }
        }
        this.question += ": O에 들어갈 수는 몇일까요?";
        this.answer += "정답:" + (dan * qID);
    }
}

 


문제0:[0][9][18][27][36][O][54][63][72][81]: O에 들어갈 수는 몇일까요?

문제1:[0][8][16][O][32][40][48][56][64][72]: O에 들어갈 수는 몇일까요?

문제2:[0][O][0][0][0][0][0][0][0][0]: O에 들어갈 수는 몇일까요?

문제3:[0][3][6][9][O][15][18][21][24][27]: O에 들어갈 수는 몇일까요?

문제4:[0][O][0][0][0][0][0][0][0][0]: O에 들어갈 수는 몇일까요?

-------------------------------------

문제0:정답:45

문제1:정답:24

문제2:정답:0

문제3:정답:12