0220 쪽지시험

moon.kick·2025년 2월 20일
0

Java 기초 개념 정리

출처: Java 기초 문법 및 개념 정리


1. 오버로딩(Overloading)

개념

  • 하나의 클래스 내부에서 같은 이름을 가진 여러 개의 메서드를 정의하는 것.
  • 사용자 편의를 위해 작성되며, 매개변수(인수)의 타입, 개수, 순서가 다르면 서로 다른 메서드로 인식됨.
  • println() 메서드가 대표적인 예시로, 다양한 타입의 데이터를 출력할 수 있음.

오버로딩의 원칙

  • 메서드 이름은 같아야 한다.
  • 매개변수의 개수, 타입, 순서가 다르면 서로 다른 메서드로 인식된다.
  • 접근 제한자 및 반환 타입은 같아도 되고, 달라도 상관없다.

오버로딩 예시

public class OverloadingExample {
    // 정수형 데이터를 받는 메서드
    public void print(int num) {
        System.out.println("정수: " + num);
    }

    // 실수형 데이터를 받는 메서드 (같은 이름, 다른 타입)
    public void print(double num) {
        System.out.println("실수: " + num);
    }

    // 문자열을 받는 메서드 (같은 이름, 다른 타입)
    public void print(String str) {
        System.out.println("문자열: " + str);
    }
}

2. 오버로딩 작성법

  • 제한자(public, private 등)와 반환 타입(void, int 등)은 같아도 되고, 달라도 됨.
  • 반드시 메서드 이름은 같아야 하고, 매개변수가 달라야 함.

올바른 오버로딩 예시

public void aa(int arr) {}  // 정수 매개변수
public void aa(double arr) {}  // 실수 매개변수
public void aa(String arr) {}  // 문자열 매개변수
public void aa(int arr, String str) {}  // 매개변수 개수 다름

3. static 키워드 (클래스 변수와 관련)

static이 필드(변수) 앞에 올 때

  • 여러 개의 객체가 공유하는 클래스 변수가 됨.
  • new 키워드로 객체를 여러 개 만들어도 값이 공유됨.
  • 사용법: 클래스이름.변수이름

예시

class Example {
    static int sharedValue = 10;  // 모든 객체가 공유하는 변수
}

public class StaticExample {
    public static void main(String[] args) {
        System.out.println(Example.sharedValue);  // 10
    }
}

4. static이 메서드 앞에 올 때

  • 클래스가 로드될 때 메모리에 미리 올라가며, 객체 없이 호출 가능.
  • 객체(this)를 사용할 수 없음.
  • 사용법: 클래스이름.메서드이름(매개변수);

예시

class StaticMethodExample {
    static void staticMethod() {
        System.out.println("이것은 static 메서드입니다.");
    }
}

public class Test {
    public static void main(String[] args) {
        StaticMethodExample.staticMethod();  // 클래스 이름으로 호출
    }
}

5. 배열 구조와 요소 값

배열 선언 및 초기화

int[] arr = new int[5];  // 길이가 5인 정수 배열 선언
  • arr참조변수이며, 배열을 가리킨다.
  • 정수형 배열은 기본적으로 0으로 초기화된다.

배열의 장점

  1. 순차 접근 가능 (for문을 이용한 전체 순회)
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);  // 배열 요소 출력
}
  1. 향상된 for문 사용 가능 (깔끔한 코드)
for (int a : arr) {
    System.out.println(a);  // 배열 요소 출력
}

6. 이터레이터(Iterator)

  • 배열이나 리스트와 같은 자료구조에서 요소를 순차적으로 접근하는 방법.
  • 향상된 for문과 비슷한 역할을 수행함.

예시 (Iterator 사용)

import java.util.ArrayList;
import java.util.Iterator;

public class IteratorExample {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());  // 요소 하나씩 출력
        }
    }
}


>다시공부할것


Getter와 Setter 개념 정리

1. Getter와 Setter란?

개념설명
Getter클래스의 private 변수 값을 반환(조회)하는 메서드
Setter클래스의 private 변수 값을 변경(설정)하는 메서드
사용 목적캡슐화(Encapsulation) 원칙을 따르며, 데이터 보호 및 접근 제한을 위해 사용
작성 방식get변수명() (조회) / set변수명(값) (설정)
특징- private 필드에 직접 접근을 막고, 안전한 데이터 조작을 보장
- getter는 값을 반환하고, setter는 값을 변경

2. Getter와 Setter 예제

문제 7. 주어진 Produt 클래스에 Getter와 Setter 추가하기

public class Product {
    private int code;
    private String name;

    // Getter for code
    public int getCode() {
        return code;
    }

    // Setter for code
    public void setCode(int code) {
        this.code = code;
    }

    // Getter for name
    public String getName() {
        return name;
    }

    // Setter for name
    public void setName(String name) {
        this.name = name;
    }
}

3. Getter와 Setter 사용 예시

public class Main {
    public static void main(String[] args) {
        Product p = new Product();
        
        // Setter 사용 (값 설정)
        p.setCode(101);
        p.setName("Laptop");
        
        // Getter 사용 (값 조회)
        System.out.println("상품 코드: " + p.getCode());
        System.out.println("상품 이름: " + p.getName());
    }
}

출력 결과

상품 코드: 101
상품 이름: Laptop

4. Getter와 Setter 사용 시 고려할 점

항목설명
캡슐화private 변수에 직접 접근을 제한하고, 안전한 데이터 관리 가능
유효성 검사setter에서 데이터 검증을 추가할 수 있음
읽기 전용 필드getter만 제공하여 변경 불가능한 속성으로 설정 가능
쓰기 전용 필드setter만 제공하여 외부에서 읽을 수 없도록 설정 가능
자동 생성 기능@Getter, @Setter (Lombok 사용 시)로 자동 생성 가능

5. Getter와 Setter 자동 생성 (Lombok 활용)

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Product {
    private int code;
    private String name;
}
  • Lombok 라이브러리를 사용하면 @Getter@Setter 어노테이션만 추가하면 자동으로 생성됨.
  • 코드가 간결해지고 유지보수가 쉬워짐.

요약

개념설명
오버로딩같은 이름의 메서드를 매개변수(타입, 개수, 순서)로 구별하여 여러 개 정의하는 것
오버로딩 작성법제한자, 반환 타입과 상관없이 같은 이름, 다른 매개변수 필요
static 필드객체가 공유하는 클래스 변수
static 메서드객체 없이 호출 가능하지만 this 사용 불가
배열의 장점순회 가능, 인덱스 제어 가능, 기본값 자동 초기화
Iterator컬렉션 요소를 순차적으로 접근하는 방식

출처

참고문헌

  1. Oracle Java 공식 문서: https://docs.oracle.com/en/java/
  2. "Java의 정석" (남궁성 저)
  3. "Effective Java" (Joshua Bloch)
  4. Baeldung - Java Encapsulation and Getters/Setters: https://www.baeldung.com/java-getters-setters
profile
@mgkick

0개의 댓글