[Java] 인터페이스와 상속을 이용한 객체 배열 프로그램 만들기

호빵·2024년 7월 22일

Java_문제 풀이

목록 보기
8/8

📅 공부 기간 : 07.19(금)

EnrollMain 동작:
메인 메뉴를 출력 -> 사용자가 1을 입력하면 Reader 객체를 생성, 2를 입력하면 Worker 객체를 생성 -> Speakable 배열에 저장한 후, 2번의 객체 등록이 끝나면 Speakable 배열에서 객체를 하나씩 꺼내어 speak() 메소드 호출 결과를 화면에 출력

Man 클래스 생성

package enrollprogram;

public class Man {
	private String name;

	public Man(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
	
}

Speakable 인터페이스 생성

인터페이스에는 추상 메소드만!

package enrollprogram;

public interface Speakable {
	public String speak();
}

Reader 클래스 생성

Man을 상속(extends)하고 Speakable을 구현(implements)

package enrollprogram;

public class Reader extends Man implements Speakable{
	public Reader(String name) {
		super(name);
	}
	
	public String speak() {
		return super.getName() + " 독자는 Java를 잘하고 싶다.";
	}
	
}

Worker 클래스 생성

Man을 상속(extends)하고 Speakable을 구현(implements)

package enrollprogram;

public class Worker extends Man implements Speakable{
	public Worker(String name) {
		super(name);
	}
	
	// super 안 넣어도 자동으로 인식 
	public String speak() {
		return super.getName() + " 일꾼은 맡은 일을 열심히 한다.";
	}
	
}

EnrollMain 생성

package enrollprogram;

import java.util.Scanner;

public class EnrollMain {
	public static void main(String[] args) {
		Scanner keyin = new Scanner(System.in);
		Speakable[] man = new Speakable[2]; // 두 명의 정보를 저장

		System.out.println("Speaker 등록 메인 메뉴입니다. 단 2명만 등록할 수 있습니다.");

		int count = 0;
		String choice;

		while(true) {
			System.out.println("어떤 Speaker를 등록하는 지 선택하세요.");
			System.out.println("1. Reader 등록");
			System.out.println("2. Worker 등록");
			choice = keyin.next();

			switch(choice) {
			case "1" : {
				System.out.println("이름을 입력하세요. ");
				String name = keyin.next();

				man[count++] = new Reader(name);

				break;
			}
			case "2" : {
				System.out.println("이름을 입력하세요. ");
				String name = keyin.next();

				man[count++] = new Worker(name);

				break;
			}
			default  :
				System.out.println("잘못된 선택입니다. 다시 선택해주세요.");
			}
			if (count == 2) {
				System.out.println("두 명 Speaker의 등록이 완료되었습니다. 이제 Speaker들의 speak 실행 결과입니다.");
				for (int i = 0; i<count; ++i) {
					System.out.println(man[i].speak());
				}
				return;
			}

		}
	}
}
profile
인류의 위대한 대화에 참여하기 위해 다양한 언어를 탐구합니다.

0개의 댓글