JAVA Basic) 추상 클래스 - 문제 풀이
Programming/Java 기초

JAVA Basic) 추상 클래스 - 문제 풀이

반응형

 

목차


     

    Q1

    클래스를 구현할 때 메서드 몸체를 구현하지 않고 선언만 하는 메서드를 [  ]라고 하고, 이를 포함한 클래스를 [  ]라고 한다.

    Q2

    상수를 선언할 때 상속받은 클래스에서 메서드를 재정의하지 못하도록 사용하는 예약어는 [  ]이다.

    Q3

    추상 클래스나 추상 메서드를 선언할 때 사용하는 예약어는 [  ]이다.

    Q4

    로직 흐름을 정의한 메서드이며 메서드 내부에서 일반 메서드나 구현되지 않은 추상 메서드를 호출. 흐름이 변하지 않도록 하위 클래스에서 재정의하지 못하게 final로 선언하는 메서드를 [  ]라고 한다.

    Q5

    Car 추상 클래스를 상속받는 Sonata, Avante, Gradeur, Genesis 클래스가 있다. 각 차는 주행하기 위해 다음 순서로 움직인다.

    run(){
    	strat();
    	drive();
    	stop();
    	turnoff();
    }

    run()메서드는 템플릿 메서드로 구현하고 다음 출력 결과가 나오도록 Car, Sonata, Avante, Gradeur, Genesis 클래스를 구현하라.

    package practice;
    import java.util.ArrayList;
    
    public class CarTest {
    	public static void mArrayList<E>g[] args) {
    		ArrayList<Car> carList = new ArrayList<Car>();
    		carList.add(new Sonata());
    		carList.add(new Grandeur());
    		carList.add(new Avante());
    		carList.add(new Genesis());
    		for(Car car : carList) {
    			car.run();
    			System.out.println("==============");
    		}
    	}
    }

    CarTest 출력문

     

    Q6

    Q5에서 구현한 차는 모두 공통으로 washCar()메서드를 호출할 수 있다. 차를 주행한 후 세차를 하도록 메서드를 추가하여 프로그램을 구현해보자.

    Q6. washCar()가 추가된 출력문

     

     

     

    정답:

    Q1: 추상 메서드, 추상 클래스

    Q2: final 예약어

    Q3: abstract

    Q4: 템플릿 메서드

    Q5:
    Car 클래스

    package practice;
    
    public abstract class Car {
    	public abstract void start();
    	public abstract void drive();
    	public abstract void stop();
    	public abstract void turnoff();
    	
    	public void run() {
    		start();
    		drive();
    		stop();
    		turnoff();
    	}
    }


    Sonata 등 하위 클래스

    package practice;
    
    public class Sonata extends Car {
    	@Override
    	public void start() {
    		System.out.println("Sonata 시동을 켭니다.");
    	}
    	@Override
    	public void drive() {
    		System.out.println("Sonata 달립니다.");
    	}
    	@Override
    	public void stop() {
    		System.out.println("Sonata 멈춥니다.");
    	}
    	@Override
    	public void turnoff() {
    		System.out.println("Sonata 시동을 끕니다.");
    	}
    }

    Q5 실행 결과

     

    Q6:

    Car 클래스

    package practice;
    
    public abstract class Car {
    	public abstract void start();
    	public abstract void drive();
    	public abstract void stop();
    	public abstract void turnoff();
    	
    	public void run() {
    		start();
    		drive();
    		stop();
    		turnoff();
    		washCar();
    	}
    	public void washCar() {
    		System.out.println("세차를 합니다.");
    	}
    }

    Q6 실행 결과

     


    [Do it! 자바 프로그래밍 입문] 도서로 공부하며 정리한 글입니다.

     

    반응형