πŸ“˜ Chapter 06: ν΄λž˜μŠ€μ™€ 객체


πŸ”Ή 06-1 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

βœ… κ°μ²΄λž€?

  • κ°μ²΄λŠ” 속성(ν•„λ“œ)κ³Ό λ™μž‘(λ©”μ†Œλ“œ)으둜 ꡬ성됨

  • 객체 κ°„μ—λŠ” λ©”μ†Œλ“œλ₯Ό 톡해 μƒν˜Έμž‘μš©ν•¨


βœ… 객체 κ°„μ˜ 관계

| 관계 μ’…λ₯˜ | μ„€λͺ… | μ˜ˆμ‹œ | |———–|β€”β€”|β€”β€”|

μ§‘ν•© 관계 객체가 λΆ€ν’ˆμ²˜λŸΌ ν¬ν•¨λ˜λŠ” 관계 μžλ™μ°¨ - μ—”μ§„, 타이어
μ‚¬μš© 관계 객체가 λ‹€λ₯Έ 객체λ₯Ό μ‚¬μš©ν•˜λŠ” 관계 μ‚¬λžŒ - μžλ™μ°¨
상속 관계 λΆ€λͺ¨ 객체λ₯Ό 기반으둜 μžμ‹ 객체 생성 λΆ€λͺ¨ 클래슀 - μžμ‹ 클래슀


βœ… ν΄λž˜μŠ€μ™€ 객체

  • 클래슀: 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ 섀계도

  • 객체: ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ„±λœ μΈμŠ€ν„΄μŠ€

  • ν•˜λ‚˜μ˜ 클래슀둜 μ—¬λŸ¬ 객체 생성 κ°€λŠ₯


βœ… 클래슀 μ„ μ–Έ κ·œμΉ™

  • 클래슀 이름은 λŒ€λ¬Έμžλ‘œ μ‹œμž‘ (CamelCase)

  • μ‹λ³„μž κ·œμΉ™μ„ 따름 (숫자둜 μ‹œμž‘ ❌, 특수문자 ❌, 곡백 ❌)

  • ν•œ μ†ŒμŠ€ νŒŒμΌμ— ν•˜λ‚˜μ˜ public 클래슀 ꢌμž₯


πŸ“Œ public μ ‘κ·Ό μ œν•œμž

  • μ†ŒμŠ€ 파일λͺ…κ³Ό λ™μΌν•œ ν΄λž˜μŠ€μ—λ§Œ public μ‚¬μš© κ°€λŠ₯


βœ… 클래슀 ꡬ성 멀버

  • ν•„λ“œ: 객체의 데이터, μƒνƒœ 정보

  • μƒμ„±μž: 객체 μ΄ˆκΈ°ν™”

  • λ©”μ†Œλ“œ: 객체의 λ™μž‘


βœ… 객체 생성 μ˜ˆμ‹œ

Car myCar = new Car();


πŸ”Ή 06-2 ν•„λ“œ (Field)

βœ… ν•„λ“œλž€?

  • 객체의 고유 데이터, λΆ€ν’ˆ 객체, μƒνƒœ 정보 μ €μž₯


βœ… ν•„λ“œ μ„ μ–Έ 방법

νƒ€μž… ν•„λ“œλͺ… = μ΄ˆκΈ°κ°’;
  • 클래슀 블둝 λ‚΄ μ–΄λ””μ„œλ“  μ„ μ–Έ κ°€λŠ₯

  • μƒμ„±μž/λ©”μ†Œλ“œ λ‚΄λΆ€μ—μ„œλŠ” ❌ (둜컬 λ³€μˆ˜)


πŸ“Œ νƒ€μž…λ³„ κΈ°λ³Έ μ΄ˆκΈ°κ°’

| νƒ€μž… | κΈ°λ³Έκ°’ | |β€”β€”|——–|

int 0
double 0.0
boolean false
String (μ°Έμ‘°ν˜•) null


βœ… ν•„λ“œ μ‚¬μš© 방법

  • 클래슀 λ‚΄λΆ€: λ‹¨μˆœνžˆ μ΄λ¦„μœΌλ‘œ μ ‘κ·Ό

  • 클래슀 μ™ΈλΆ€: 객체 생성 ν›„ . μ—°μ‚°μž μ‚¬μš©

Car myCar = new Car();
myCar.speed = 60;


πŸ”Ή 06-3 μƒμ„±μž (Constructor)

βœ… μƒμ„±μžλž€?

  • 객체 생성 μ‹œ μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•˜λŠ” νŠΉμˆ˜ν•œ 블둝

  • ν΄λž˜μŠ€μ™€ 이름 동일, λ¦¬ν„΄νƒ€μž… μ—†μŒ

class Car {
  Car() {
    // μƒμ„±μž μ½”λ“œ
  }
}


βœ… κΈ°λ³Έ μƒμ„±μž

  • λ§€κ°œλ³€μˆ˜ μ—†λŠ” μƒμ„±μž

  • ν΄λž˜μŠ€κ°€ public이면 μƒμ„±μžλ„ public

public class Car {
  public Car() {
    // κΈ°λ³Έ μƒμ„±μž
  }
}


βœ… λͺ…μ‹œμ  μƒμ„±μž μ‚¬μš© μ˜ˆμ‹œ

class Car {
  String model;
  Car(String m) {
    model = m;
  }
}

Car myCar = new Car("Sonata");


βœ… this ν‚€μ›Œλ“œ μ‚¬μš© μ˜ˆμ‹œ

class Car {
  String model;
  Car(String model) {
    this.model = model;
  }
}


βœ… μƒμ„±μž μ˜€λ²„λ‘œλ”©

  • μƒμ„±μž μ—¬λŸ¬ 개 μ •μ˜ (λ§€κ°œλ³€μˆ˜ νƒ€μž…/수/μˆœμ„œ λ‹€λ₯΄κ²Œ)
class Car {
  Car() {}
  Car(String model) {}
  Car(String model, int year) {}
}


βœ… μƒμ„±μž κ°„ 호좜 - this()

class Car {
  String model;
  int year;

  Car(String model) {
    this(model, 2025); // λ‹€λ₯Έ μƒμ„±μž 호좜
  }

  Car(String model, int year) {
    this.model = model;
    this.year = year;
  }
}