IT/JAVA

[JAVA] 자바 기초 복습 (Chapter.06)

j8970 2025. 2. 25. 17:46

📅 학습 기간: 2월 1주차
🎯 학습 내용: 생성자, 상속, 오버라이딩 개념 및 활용


📌 1. 생성자 (Constructor)

💡 객체(인스턴스)가 생성될 때 호출되는 '인스턴스 초기화 메서드'

  • 클래스명과 동일한 이름을 사용해야 함
  • 리턴값이 없는 메서드 형식 (void 타입이 생략됨)

✅ 기본 생성자 (컴파일러 제공)

  • 클래스에 생성자가 없으면 자동으로 생성되는 빈 생성자
class Example1 {
    int value;
    // 기본 생성자 생략 → 컴파일러가 자동 생성
}

✅ 사용자 정의 생성자

  • 개발자가 직접 정의한 생성자
  • 기본 생성자가 사라짐 (컴파일러가 자동 생성하지 않음)
class Example2 {
    int value;

    // 사용자 정의 생성자
    Example2(int value) {
        this.value = value;
    }

    // 기본 생성자를 명시적으로 선언할 수도 있음
    Example2() {}
}

📌 2. this 키워드

✅ 1) this

  • 인스턴스 자신을 참조
  • 모든 인스턴스 메서드와 생성자 내부에서 사용 가능

✅ 2) this()

  • 같은 클래스 내의 다른 생성자 호출
  • 중복 코드 제거 및 유지보수성 향상

📌 3. 상속 (Inheritance)

💡 한 클래스의 속성과 메서드를 다른 클래스가 물려받는 것

  • 기존 클래스를 재사용하여 새로운 클래스를 작성하는 기법
  • 코드의 재사용성, 중복 제거 (프로그램 생산성 향상)

✅ 상속 구현 방법

  • extends 키워드 사용
class Parent {}  // 부모 클래스
class Child extends Parent {}  // 자식 클래스 (Parent 클래스를 상속)

📌 예제

// 동물 클래스 (부모)
class Animal {
    String name;
}

// 강아지 클래스 (자식)
class Dog extends Animal {
    void bark() {
        System.out.println("강아지가 짖습니다.");
    }
}

📌 4. 상속에서의 생성자

💡 자식 클래스에서 객체 생성 시, 항상 부모 클래스의 생성자가 먼저 호출됨!

super()

  • 부모 클래스의 생성자 호출
  • 부모 클래스의 멤버(변수, 메서드, 생성자)를 호출할 때 사용

📌 5. 오버라이딩 (Method Overriding)

💡 자식 클래스가 부모 클래스에서 상속받은 '메서드'를 자신의 상황에 맞게 '재정의'하는 것

  • 부모 클래스의 기본 동작을 변경하거나 확장할 때 사용

✅ 오버라이딩 예제

class ParentClass {
    void exercise() {
        System.out.println("달리기를 잘합니다.");
    }
}

class ChildClass extends ParentClass {
    @Override
    void exercise() {
        System.out.println("달리기도 잘하고 피구도 잘합니다.");
    }
}

📌 6. 오버라이딩의 특징

1️⃣ 메서드 시그니처 일치

  • 부모 클래스의 메서드와 동일한 이름, 매개변수 구성이 필요
  • 반환 타입은 같거나 자동 형 변환 가능해야 함

2️⃣ @Override 어노테이션 사용

  • 오버라이딩을 명확하게 표시하여 가독성 및 유지보수성 향상

3️⃣ 다형성 구현

  • 하나의 이름으로 다양한 기능 수행 가능

4️⃣ 재사용성 & 확장성 향상

  • 기존 코드 변경 없이 새로운 기능 추가 가능

🎯 소감

📌 상속과 오버라이딩은 객체 지향 프로그래밍(OOP)에서 계속 사용될 핵심 개념!
📌 클래스 설계 시 코드 재사용성과 유지보수성을 고려하는 것이 중요!


🚀 마무리

이번 장에서는 생성자, 상속, 오버라이딩 개념과 특징을 학습했다!