Published on

항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 (1) - 클래스

Authors
  • avatar
    Name
    Kil Hyeon Jun
    Twitter

항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 - 클래스

소개

이번 3주차 스터디에서는 Java의 클래스에 대해 학습했다.

1. 객체 지향 프로그래밍 (Object-Oriented Programming)

객체 지향 프로그래밍이란?

  • 객체를 중심으로 프로그래밍하는 방식
  • 클래스를 통해 객체를 생성하고, 객체 간의 상호작용을 통해 프로그램을 구현

객체란?

  • 속성 (Attribute): 객체의 특징을 나타내는 데이터
  • 메소드 (Method): 객체의 동작을 나타내는 코드

객체지향 프로그래밍의 특징

  1. 캡슐화 (Encapsulation)

    • 객체의 속성과 메소드를 하나로 묶어 외부에서 접근을 제한하는 것
    • 정보 은닉 (Information Hiding)을 통해 객체의 상태를 보호
  2. 상속 (Inheritance)

    • 부모 클래스의 속성과 메소드를 자식 클래스가 물려받는 것
    • 코드의 재사용성을 높이고, 유지보수를 용이하게 함
  3. 다형성 (Polymorphism)

    • 하나의 메소드나 클래스가 다양한 방식으로 동작하는 것
    • 오버로딩 (Overloading)과 오버라이딩 (Overriding)을 통해 구현
  4. 추상화 (Abstraction)

    • 객체의 공통된 특징을 추출하여 클래스로 정의하는 것
    • 객체의 복잡성을 줄이고, 코드의 가독성을 높임

2. 클래스 (Class)

클래스란?

  • 객체를 생성하기 위한 설계도
  • 객체의 속성과 메소드를 정의

클래스의 구성 요소

  1. 필드 (Field)

    • 객체의 속성을 나타내는 변수
    • 객체의 상태를 저장
  2. 메소드 (Method)

    • 객체의 동작을 나타내는 함수
    • 객체의 행위를 정의
  3. 생성자 (Constructor)

    • 객체를 생성할 때 호출되는 특수한 메소드
    • 객체의 초기화를 담당

클래스의 선언

public class ClassName {
    // 필드
    private int field;

    // 생성자
    public ClassName() {
        // 초기화
    }

    // 메소드
    public void methodName() {
        // 동작
    }
}

클래스의 사용

public class Main {
    public static void main(String[] args) {
        // 객체 생성
        ClassName obj = new ClassName();

        // 메소드 호출
        obj.methodName();
    }
}

3. 클래스와 객체

클래스와 객체의 관계

  • 클래스: 객체를 생성하기 위한 설계도
  • 객체: 클래스를 통해 생성된 실체

객체 생성 (인스턴스화)

  • 클래스를 통해 객체를 생성하는 과정
  • new 키워드를 사용하여 객체 생성

객체 사용

  • 객체를 통해 클래스의 필드와 메소드에 접근
  • . 연산자를 사용하여 객체의 속성과 동작을 호출

4. 메소드 오버로딩 (Method Overloading)

메소드 오버로딩이란?

  • 같은 이름의 메소드를 여러 개 정의하는 것
  • 매개변수의 타입, 개수, 순서가 다르면 오버로딩 가능

메소드 오버로딩의 장점

  • 메소드 이름을 통일하여 사용성을 높임
  • 다양한 매개변수를 받아 처리 가능

메소드 오버로딩의 예시

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

5. 인스턴스 멤버와 클래스 멤버

인스턴스 멤버 (Instance Member)

  • 객체를 생성해야 사용할 수 있는 멤버
  • 객체마다 별도로 생성되는 필드와 메소드

클래스 멤버 (Class Member)

  • 객체 생성 없이 사용할 수 있는 멤버
  • 클래스에 고정된 필드와 메소드

인스턴스 멤버와 클래스 멤버의 차이

  • 인스턴스 멤버: 객체마다 다른 값을 가질 수 있음
  • 클래스 멤버: 모든 객체가 공유하는 값을 가짐

클래스 멤버의 선언

  • static 키워드를 사용하여 클래스 멤버를 선언
public class ClassName {
    // 클래스 필드
    public static int classField;

    // 클래스 메소드
    public static void classMethod() {
        // 동작
    }
}

클래스 멤버의 사용

  • 클래스 이름을 통해 접근
public class Main {
    public static void main(String[] args) {
        // 클래스 필드 사용
        ClassName.classField = 10;

        // 클래스 메소드 호출
        ClassName.classMethod();
    }
}

6. 정리

  • 객체 지향 프로그래밍은 객체를 중심으로 프로그래밍하는 방식
  • 클래스는 객체를 생성하기 위한 설계도
  • 클래스는 필드, 메소드, 생성자로 구성
  • 클래스를 통해 객체를 생성하고, 객체 간의 상호작용을 통해 프로그램을 구현
  • 메소드 오버로딩을 통해 같은 이름의 메소드를 여러 개 정의 가능
  • 인스턴스 멤버는 객체마다 다른 값을 가지며, 클래스 멤버는 모든 객체가 공유하는 값을 가짐