📌 오늘 학습한 주제
- Java 배열(Array) 기본 개념 및 향상된 for문(Enhanced for loop) 순회 (
AryApp.java)
- 객체 배열(Object Array) 선언 및
null 예외 처리
- 객체지향 상속(Inheritance) 및
super 키워드를 활용한 부모 생성자/메소드 호출 (StudentDTO.java, TeacherDTO.java, ManagerDTO.java)
- 메소드 오버라이딩(Method Overriding)을 통한 다형성 기초 체계 다지기
💡 오늘 배운 것 — 나만의 언어로
① 오늘의 목표
- Java 고정 길이 배열의 특징과 객체 배열 제어법을 익히고, 상속 관계(
extends)를 활용해 공통 속성을 재사용하면서 메소드 오버라이딩을 적용해 보기
② 학습할 내용
- 배열과 향상된 for문 (
AryApp.java): 동일한 데이터 타입만 담는 고정 길이 참조 타입인 배열의 특성을 이해하고, 기본 for문과 향상된 for문(for(Type item : array))을 사용해 요소를 순회하는 법을 배웠다. 객체 배열 순회 시 null 접근에 의한 NullPointerException 방지 예외 처리 조건문도 실습했다.
- 클래스 상속과
super 키워드 (StudentDTO, TeacherDTO, ManagerDTO): 공통 부모 클래스인 PersonDTO를 extends로 상속받아 자식 클래스에서 부모 생성자 super(name, age, address)를 호출하여 멤버 변수를 초기화했다.
- 메소드 오버라이딩 (
@Override): 부모 클래스의 personInfo() 메소드를 자식 클래스 특성(ssn, subject, dept)에 맞춰 재정의함으로써 고유 정보까지 결합된 문자열을 출력하도록 확장했다.
💻 오늘 핵심 코드
1. 객체 배열 순회 및 null 예외 처리 (AryApp.java)
import features.blogs.domain.dto.BlogResponseDTO;
public class AryApp {
public static void main(String[] args) {
BlogResponseDTO[] blogsAry = new BlogResponseDTO[10];
BlogResponseDTO response = BlogResponseDTO.builder()
.status(200)
.message("good")
.build();
blogsAry[0] = response;
blogsAry[1] = response;
for(BlogResponseDTO data : blogsAry) {
if(data == null) {
break;
}
System.out.println(data.getMessage());
}
}
}
2. 상속과 super 키워드 및 메소드 오버라이딩 (StudentDTO.java)
package features.oop.sub;
import features.oop.sup.PersonDTO;
public class StudentDTO extends PersonDTO {
private String ssn;
public StudentDTO() {}
public StudentDTO(String name, int age, String address, String ssn) {
super(name, age, address);
this.ssn = ssn;
}
@Override
public String personInfo() {
return super.personInfo() + ", ssn=" + ssn;
}
}
🛠️ 실습 / 결과물 & 참고 자료
③ 실습 / 결과물
- 강의 실습코드:
AryApp.java, StudentDTO.java, TeacherDTO.java, ManagerDTO.java 파일 연동을 통해 객체 배열 제어와 상속 기반 서브 클래스 설계 실습 완성.
④ 참고 자료
- Oracle Java Documentation: Java Arrays & Inheritance / Overriding Methods 예제 참고
🔍 문제와 해결
- 막힌 부분: 객체 배열의 크기(length)만큼 순회 시 초기화되지 않은 요소 접근으로 인해
NullPointerException이 발생할 수 있는 현상 점검.
- 해결 방법: 반복문 내부에
if (data == null) break; 조건을 추가하여 안전하게 객체 배열을 참조하도록 예외 안전성을 확보함.
🎯 다음에 할 일