GOORM-DEEP DIVE 백엔드 3회차 회고 DAY6

Cori1304·2025년 3월 5일
0

GOORM-DEEPDIVE

목록 보기
5/19

글을 쓰게된 배경

부트캠프에서 처음으로 java수업을 받고 있기에 기록하는 게 좋다고 생각했고, 수업이 있는 날이면 매일 글을 쓰려고 합니다. 쵀대한 몰랐거나 필요하다고 생각되는 내용 위주로 기록할 예정입니다. (제가 게을러서 이러한 시도를 성공한 적이 없기에 이번 부트캠프 목표 중 1가지입니다. 할 수 있도록 화이팅!!)

chap7~9 수업 내용 정리

extends와 implement

extends

부모 클래스의 구현을 재사용하고 확장하는 데 사용된다. 사용하면 부모 클래스의 모든 멤버(필드, 메서드)를 자식이 상속받는다. (📝항상 단일 상속만 가능 즉, 하나의 클래스는 하나의 부모 클래스만 상속받을 수 있다.)

class Animal {
    void move() {
        System.out.println("Animal moves.");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog barks.");
    }
}

implement

클래스가 특정 기능을 제공하도록 강제하는 데 사용, 거의 모든 경우 인터페이스를 구현할 때 사용된다. (📝다중 구현이 가능 즉, 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있다)

interface Soundable {
    void makeSound();
}

class Cat implements Soundable {
    @Override
    public void makeSound() {
        System.out.println("Cat meows.");
    }
}

super와 super()

class ParentClass {
    String name;

    ParentClass(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Parent Class: Hello!");
    }
}

class ChildClass extends ParentClass {
    ChildClass(String name) {
    //super()는 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하는 데 사용
        super(name); // 부모 클래스의 생성자 호출
    }

    @Override
    void greet() {
  /** super 키워드는 자식 클래스에서 부모의 멤버(필드, 메서드)에 접근하는 데 사용한다.
   자식 클래스의 생성자에서 super()를 호출하지 않으면, 
   컴파일러는 자동으로 부모의 기본 생성자(매개변수가 없는 생성자)를 호출**/
        super.greet(); // 부모 클래스의 메서드 호출
        System.out.println("Child Class: Hello!");
    }

    void introduce() {
        /** 부모 클래스의 메서드를 오버라이드(Override)한 경우, 
        부모 클래스의 메서드를 호출하고 싶을 때 부모 클래스의 필드에 접근하고 싶을 때 **/    
        super.greet();
        System.out.println("My name is " + super.name + "."); // 부모 클래스의 필드 접근
    }
}

public class SuperExample {
    public static void main(String[] args) {
        ChildClass child = new ChildClass("Child");
        child.greet();
        child.introduce();
    }
}

overloading

오버로딩은 생성자(constructor)에서 자주 사용되지만, 일반 메서드에서도 유용하게 활용됩니다. 오버로딩을 통해 코드의 유연성을 높이고 가독성을 향상시킬 수 있다.

생성자 사용 예시

class Person {
    String name;
    int age;

    public Person() {   // 기본 생성자
        this.name = "Unknown";
        this.age = 0;
    }

    public Person(String name) { // 이름만 초기화하는 생성자
        this.name = name;
        this.age = 0;
    }

    public Person(String name, int age) {  // 이름과 나이를 초기화하는 생성자
        this.name = name;
        this.age = age;
    }
}

메서드 사용 예시

class Calculator {
  
    public int add(int a, int b) {  // 정수 덧셈
        return a + b;
    }

    public double add(double a, double b) {  // 실수 덧셈
        return a + b;
    }

    public int add(int a, int b, int c) {    // 세 개의 정수 덧셈
        return a + b + c;
    }
}

배운 점

  • override는 들었지만 overloading은 생소한 단어 였다. 다행이도 개념이 어려운게 아니라서 금방 이해했다.
  • 상속은 거의 사용을 안하면서 코드를 짰다라는 생각이 들었다. java가 객체지향 언어라서가 아니라 지금까지 사용한 flutter와 ts,js에도 상속이 있는데 너무 무식하게 코드를 짠게 아닌가 생각이 든다.
profile
개발 공부 기록

0개의 댓글

관련 채용 정보