일단 이것저것 해 보는 블로그

(Do it! 자바, 3주차-2) 08장 되새김 문제 풀이 본문

2026/Do it Java 스터디(2026.01.~02.)

(Do it! 자바, 3주차-2) 08장 되새김 문제 풀이

뷔구룽 2026. 1. 20. 22:14

사용한 학습 자료: 박은종, 2025, <Do it! 자바 프로그래밍 입문 [개정판]>, 이지스퍼블리싱.

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415

 

Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자

eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인

ebook-product.kyobobook.co.kr

 

01. 자바에서 어떤 클래스의 기능을 확장해 하위 클래스로 상속할 때 사용하는 예약어

-> extends

Ex) class Bicycle extends Vehicle { } (Vehicle 클래스를 상속받는 Bicycle 클래스)

 

02. 상위 클래스의 주소(참조값)를 나타내는 예약어

-> super

* 하위 클래스가 상위 클래스의 생성자나 인스턴스 변수, 메서드 등을 호출할 때

 

03. 메서드 오버라이드: (클래스 상속 상태에서) 상위 클래스에 이미 정의되어 있는 메서드를 하위 클래스에서 재정의할 수 있다는 개념,

 

04. 문제에서 Employee는 상위 클래스, Engineer는 Employee를 상속받은 하위 클래스

-> 문제의 코드에 따르면, 상위 클래스에 디폴트 생성자가 없으므로 하위 클래스에서 생성자를 정의하고 super()를 사용해 상위 클래스의 생성자를 명시적으로 호출해야 함.

-> 이를 토대로 아래 직접 수정한 코드 첨부(기본 뼈대는 학습 자료 287쪽 04번 참조)

package Question08;

public class Employee {
    public String name;
    public String grade;
	
    // 상위 클래스 Employee의 생성자
    public Employee(String name) {
        this.name = name;
    }
}

class Engineer extends Employee {
    private String skillset;
	// 하위 클래스 Engineer에서 생성자를 정의
    public Engineer(String name, String grade, String skillset) {
        super(name); // 상위 클래스 Emplotee의 생성자(매개변수 name)를 호출
        grade = "Master";
        this.skillset = skillset;
    }
	// 후략
}

 

 

05. 1)  ArrayList<Shape> list = new ArrayLisy<Shape>();

-> 각 클래스의 인스턴스를 담을 ArratList(배열) list를 선언

2) s.draw();

-> for문에서 Shape형 변수 s에 list의 배열 요소를 대입한 뒤, s를 참조해 각 요소(클래스)의 draw() 메서드 호출

 

06. 하위 클래스가 생성될 때 -> 상위 클래스의 생성자가 먼저 호출

상위 클래스에 생성자 코드가 따로 없을 때 -> super()로 상위 클래스의 디폴트 생성자가 자동 호출

상위 클래스에 매개변수가 있는 생성자만 있으면 -> super(매개변수)로 매개변수가 있는 상위 클래스의 생성자 직접 호출