Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

이상민

[혼공자바 3주차] Chapter 06 본문

혼공

[혼공자바 3주차] Chapter 06

sm1118sm 2025. 7. 20. 19:46

 

혼자공부하는 자바 3주차 (p.234 ~ p.329) 

 

06. 클래스

 

06-1 객체 지향 프로그래밍

클래스 객체를 만들기 위한 설계도
객체 클래스로부터 생성된 실체, new 클래스이름(); 으로 생성
new 연산자 객체를 생성하고 생성자 호출, 객체 번지를 리턴
클래스 변수 클래스 타입으로 선언된 변수 (객체 참조 저장)
인스턴스 객체는 클래스의 인스턴스
클래스 멤버 클래스 내 선언된 필드, 메서드, 생성자

 

 

 

06-2 필드

 

필드 선언 클래스 중괄호 {} 안에서 선언. 생성자/메서드 내부에서는 ❌
필드 사용 클래스 내부에서는 바로 사용 가능, 외부에서는 객체 생성 후 접근 필요
public class Car {
       String model; // 필드
}

 

 

06-3 생성자 

 

기본 생성자 컴파일러가 자동 추가 (다른 생성자 없을 경우)
명시적 생성자 개발자가 직접 정의한 생성자. 선언하면 기본 생성자는 생성되지 않음
매개변수 생성자 호출 시 전달받는 값
객체 초기화 필드 초기화 or 메서드 호출로 설정
오버로딩 매개변수가 다른 생성자를 여러 개 선언
this() 자신의 다른 생성자를 호출할 때 사용

 

public class Car {
 
           String model;
 
           Car() {
 
                 this("기본 모델");
 
           }
 
           Car(String model) {
 
                 this.model = model;
 
           }
}
 

 

 

 

06-4 메서드 

선언부 리턴 타입, 메서드 이름, 매개변수 포함
void 리턴값이 없음을 의미
return 문 리턴 타입이 있을 경우 반드시 필요
호출 메서드이름(값, ...) 형태
오버로딩 동일한 이름의 메서드를 여러 개 선언. 조건: 매개변수 타입/개수/순서 다름

 

public void printInfo() {
    System.out.println("정보 출력");
}

public void printInfo(String name) {
    System.out.println("이름: " + name);
}

 

 

06-5 인스턴스 멤버와 정적 멤버

인스턴스 멤버 객체 생성 후 사용할 수 있는 멤버 (필드, 메서드)
this 인스턴스 자신을 가리키는 참조자
정적 멤버 (static) 클래스에 고정된 멤버. 객체 없이도 사용 가능
싱글톤 프로그램에서 단 하나만 생성되도록 보장되는 객체
final 필드 한 번 초기화되면 변경 불가
상수 final static으로 선언된 불변 값

 

public class Calculator {
    static final double PI = 3.14159;  // 상수
    final int id;                     // final 필드

    Calculator(int id) {
        this.id = id;
    }
}

 

06-6 패키지와 접근 제한자

 

패키지 선언 클래스 상단에 package 패키지명; 형태로 작성
import 문 다른 패키지의 클래스 사용 시 필요
접근 제한자 외부 접근 제어 목적. 클래스, 필드, 메서드, 생성자 등에 사용

 

package com.example.car;
import java.util.Scanner;

 

 

접근 제한자 종류

public 모든 클래스에서 접근 가능
protected 같은 패키지 + 자식 클래스에서 접근
(default) 같은 패키지 내에서만 접근
private 해당 클래스 내부에서만 접근 가능

 

Getter / Setter 예시

 

public class Member {
    private String name;

    public String getName() {
        return this.name;
    }

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

 

 

기본 숙제(필수) : 어렵게나 중요하다고 생각하는 용어를 혼공용어 노트에 정리하고 공유하기

 

 

 

추가 숙제(선택) : 객체 지향 프로그래밍의 개념 정리하기

 

객체 지향 프로그래밍 : 객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법

 

1. 필드

  • 클래스에 선언된 변수
  • 객체의 속성(데이터)을 저장
  • 보통 private으로 선언하고 getter/setter로 접근
public class Person {
    private String name; // 필드
    private int age;     // 필드
}

2. 생성자

  • 객체 생성 시 자동 호출되는 메서드
  • 클래스 이름과 같고, 리턴 타입 없음
  • 오버로딩 가능
public class Person {
    String name;
    
    // 기본 생성자
    public Person() {
        this.name = "홍길동";
    }

    // 매개변수 있는 생성자
    public Person(String name) {
        this.name = name;
    }
}

3. 메서드

  • 동작/기능을 정의
  • 객체의 행동을 구현
  • returnType methodName(매개변수) { }
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

4. 인스턴스 멤버

  • 객체가 생성되어야만 사용할 수 있는 멤버
  • 필드, 메서드 앞에 static이 없는 경우
 
public class Car {
    int speed = 0; // 인스턴스 필드

    void run() {    // 인스턴스 메서드
        System.out.println("달립니다.");
    }
}

// 사용
Car c = new Car();
c.run();  // 인스턴스 메서드 호출

5. 정적 멤버

  • 클래스 자체에 속하는 멤버
  • 객체 생성 없이 사용 가능
  • static 키워드 사용
public class MathUtil {
    static double PI = 3.14; // 정적 필드

    static int square(int x) { // 정적 메서드
        return x * x;
    }
}

// 사용
double p = MathUtil.PI;
int result = MathUtil.square(5);

6. 패키지

  • 관련 클래스들을 논리적으로 묶는 공간
  • 파일 상단에 package 선언
  • 폴더 구조와 연동
 
package myapp.utils; 
 
  • import를 통해 다른 패키지의 클래스 사용 가능
 
import myapp.utils.MyClass;

7. 접근 제한자


public 어디서든 접근 가능
protected 같은 패키지 + 상속받은 클래스에서 가능
default (없을 경우) 같은 패키지 내에서만 접근 가능
private 해당 클래스 내부에서만 접근 가능
 
public class Person {
    public String name;       // 어디서든 접근 가능
    protected int age;        // 같은 패키지 + 자식 클래스
    String address;           // default (같은 패키지)
    private String password;  // 클래스 내부만
}

 

 

'혼공' 카테고리의 다른 글

[혼공자바 5주차] Chapter 08~09  (4) 2025.08.08
[혼공자바 4주차] Chapter 07  (4) 2025.07.27
[혼공자바 2주차] Chapter 04 ~ 05  (1) 2025.07.07
[혼공자바 1주차] Chapter 01 ~ 03  (1) 2025.07.01
[혼공컴운 6주차] Chapter 14 ~ 15  (1) 2024.02.06