
1. 추상클래스

package ex07.ch01;
abstract class 판사 {
public void 심문() {
System.out.println("판사는 심문한다");
}
}
class 왕비 extends 판사 {
}
class 왕 extends 판사 {
}
abstract class 증인 {
public abstract void 대답();
}
class 엘리스 extends 증인 {
@Override
public void 대답() {
System.out.println("엘리스는 대답한다");
}
}
class 모자장수 extends 증인 {
public void 대답() {
System.out.println("모자장수는 대답한다");
}
}
class 토끼 extends 증인 {
@Override
public void 대답() {
System.out.println("토끼는 대답한다");
}
}
class Game {
public void 심문(판사 u) {
u.심문();
}
public void 대답(증인 u) {
u.대답();
}
}
public class AliceApp {
public static void main(String[] args) {
Game g = new Game();
엘리스 s = new 엘리스();
g.대답(s);
}
}

2. 인터페이스


public interface 인터페이스_이름 {
반환형 추상메서드(...);
}
package ex07.ch01;
/*
삼성 리모컨, 엘지 리모컨
기능: on, off
*/
// 인터페이스 - 강제화시킴
interface Remocon { // 추상메서드는 무조건 public(접근제어자), abstract가 기본, new 불가능!
public abstract void on(); // public, abstract 생략
void off();
}
class SamsungRemocon implements Remocon {
@Override
public void on() {
System.out.println("삼성 리모컨 ON");
}
@Override
public void off() {
System.out.println("삼성 리모컨 OFF");
}
}
class LGRemocon implements Remocon {
@Override
public void on() {
System.out.println("엘지 리모컨 ON");
}
@Override
public void off() {
System.out.println("엘지 리모컨 OFF");
}
}
public class Inter01 {
static void start(Remocon r) {
r.on();
}
public static void main(String[] args) {
Remocon lg = new LGRemocon();
start(lg);
}
}
자바 복습 / 연습 문제3. 영화 예매 프로그램
package test;
import java.util.ArrayList;
import java.util.Scanner;
class Movie {
private String title;
private String[] seats; // 1차원 배열로 좌석 관리
public Movie(String title, int seatCount) {
this.title = title;
this.seats = new String[seatCount]; // 좌석 배열 생성
for (int i = 0; i < seatCount; i++) {
seats[i] = "A" + (i + 1); // 좌석 번호 저장 (예: A1, A2, A3 ...)
}
}
public String getTitle() {
return title;
}
public void showSeats() {
System.out.println("\n=== [" + title + "] 좌석 목록 ===");
for (String seat : seats) {
if (seat.equals("X")) {
System.out.print("[예약됨] ");
} else {
System.out.print("[" + seat + "] ");
}
}
System.out.println(); // 줄 바꿈
}
public boolean reserveSeat(String seatNumber) {
for (int i = 0; i < seats.length; i++) {
if (seats[i].equals(seatNumber)) {
seats[i] = "X"; // 예약 완료 표시
System.out.println(seatNumber + " 좌석이 예약되었습니다.");
return true;
}
}
System.out.println("잘못된 좌석 번호이거나 이미 예약된 좌석입니다.");
return false;
}
}
public class MovieReservationSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 영화 객체 생성
ArrayList<Movie> movies = new ArrayList<>();
movies.add(new Movie("인셉션", 5)); // 좌석 5개
movies.add(new Movie("어벤져스", 5));
movies.add(new Movie("인터스텔라", 5));
while (true) {
System.out.println("\n=== 영화 예약 시스템 ===");
System.out.println("1. 영화 목록 보기");
System.out.println("2. 좌석 예약하기");
System.out.println("3. 종료");
System.out.print("메뉴 선택: ");
int choice = scanner.nextInt();
scanner.nextLine(); // 개행 문자 처리
if (choice == 1) {
System.out.println("\n=== 영화 목록 ===");
for (int i = 0; i < movies.size(); i++) {
System.out.println((i + 1) + ". " + movies.get(i).getTitle());
}
} else if (choice == 2) {
System.out.println("\n=== 영화 목록 ===");
for (int i = 0; i < movies.size(); i++) {
System.out.println((i + 1) + ". " + movies.get(i).getTitle());
}
System.out.print("영화 번호 선택: ");
int movieChoice = scanner.nextInt();
scanner.nextLine(); // 개행 문자 처리
if (movieChoice < 1 || movieChoice > movies.size()) {
System.out.println("잘못된 선택입니다.");
continue;
}
Movie selectedMovie = movies.get(movieChoice - 1);
selectedMovie.showSeats();
System.out.print("예약할 좌석 번호 입력 (예: A1): ");
String seatNumber = scanner.nextLine();
selectedMovie.reserveSeat(seatNumber);
} else if (choice == 3) {
System.out.println("프로그램을 종료합니다.");
break;
} else {
System.out.println("잘못된 입력입니다.");
}
}
scanner.close();
}
}
Share article