# [Java] ๊ฐ์ฒด(Object)์™€ ํด๋ž˜์Šค(Class)์— ๋Œ€ํ•ด
Study Repository

[Java] ๊ฐ์ฒด(Object)์™€ ํด๋ž˜์Šค(Class)์— ๋Œ€ํ•ด

by rlaehddnd0422

ํ”„๋กœ๊ทธ๋žจ์˜ ๊ทœ๋ชจ๊ฐ€ ์ ์  ์ปค์ง€๊ณ  ์‚ฌ์šฉ์ž๋“ค์˜ ์š”๊ตฌ๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•ด๊ฐ€๋Š” ์ƒํ™ฉ์„ ์ ˆ์ฐจ์  ์–ธ์–ด๋กœ๋Š” ๊ทน๋ณตํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ํ•œ๊ณ„๋ฅผ ๋Š๋ผ๊ณ  ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋ฅผ ์ด์šฉํ•œ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•๋ก ์ด ๋Œ€์•ˆ์œผ๋กœ ๋– ์˜ค๋ฆ„๊ณผ ๋™์‹œ์— ์ž๋ฐ”๊ฐ€ ๋ฐœํ‘œ๋˜๊ณ  ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋Š” ์ด์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์˜ ์ฃผ๋ฅ˜๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค.

 

1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-oriented Programming)์ด๋ž€?

์‰ฝ๊ฒŒ ๋งํ•ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ์ดํ„ฐ์™€ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋ˆ„๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์ˆ˜์˜ "๊ฐ์ฒด"๋ฅผ ๋งŒ๋“ค๊ณ , ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•ด์„œ ๊ธฐ์กด ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฐฉ์‹์ด๋ผ๊ณ  ๋Š๋‚„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ์‹ค ๊ธฐ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ทœ์น™๋“ค๋งŒ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐœ์ „๋œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. 

 

๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด = ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด + ๊ฐ์ฒด์ง€ํ–ฅ๊ฐœ๋…(๊ทœ์น™)

๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์˜ ํŠน์ง•

  1. ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค : ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
  2. ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋‹ค : ์ฝ”๋“œ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•ด ์ ์€ ๋…ธ๋ ฅ์œผ๋กœ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ.
  3. ์‹ ๋ขฐ์„ฑ์ด ๋†’์€ ๊ฐœ๋ฐœ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค : ์ œ์–ด์ž์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜๋ฉฐ, ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ ์˜ค๋™์ž‘์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ.

 

2. ํด๋ž˜์Šค

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์„ค๊ณ„๋„์ž…๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์—ญ์œผ๋กœ ๋งํ•˜๋ฉด ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค์— ์˜ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šค ๊ตฌ์„ฑ์š”์†Œ
๊ตฌ์„ฑ์š”์†Œ ์„ค๋ช…
ํ•„๋“œ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์œผ๋กœ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”์†Œ๋“œ ๊ฐ์ฒด์˜ ์–ด๋–ค ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
์ƒ์„ฑ์ž  new ์—ฐ์‚ฐ์ž๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ํ•„๋“œ์˜ ์ดˆ๊ธฐํ™”๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ๋“ค๋ฉด ์ž๋™์ฐจ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

package oop.classAndInstance;

public class Car {

    public String modelName; // ํ•„๋“œ
    public String modelYear; // ํ•„๋“œ
    public String color; // ํ•„๋“œ
    private Long currentSpeed;
    public Long maxSpeed; // ํ•„๋“œ
	
    
    // ์ƒ์„ฑ์ž
    public Car(String modelName, String modelYear, String color, Long currentSpeed, Long maxSpeed) {
        this.modelName = modelName;
        this.modelYear = modelYear;
        this.color = color;
        this.currentSpeed = currentSpeed;
        this.maxSpeed = maxSpeed;
    }

    public void brake() { // ๋ฉ”์†Œ๋“œ - ์ธ์Šคํ„ด์Šค๊ฐ€ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜
        this.currentSpeed = 0L;
    }

    public void accelerate() { // ๋ฉ”์†Œ๋“œ
        this.currentSpeed++;
    }
}

์œ„ ์„ค๊ณ„๋„์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๋ชจ๋‘ ์œ„์™€ ๊ฐ™์€ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋ฉ”์†Œ๋“œ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ ‘๊ทผ์ œ์–ด์ž ๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ) { // ์„ ์–ธ๋ถ€
	// ๊ตฌํ˜„๋ถ€
}

1. ์ ‘๊ทผ ์ œ์–ด์ž : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ( private, public, protected, default )

2. ๋ฆฌํ„ด ํƒ€์ž… : ๋™์ž‘์„ ๋งˆ์น˜๊ณ  ๋ฆฌํ„ดํ•˜๋Š” ํƒ€์ž…

 

3. ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ : ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„

 

4. ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ : ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜ ๊ฐ’๋“ค

 

5. ๊ตฌํ˜„๋ถ€ : ๊ณ ์œ  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌํ˜„๋ถ€

 

3. ์ธ์Šคํ„ด์Šค 

ํด๋ž˜์Šค(์„ค๊ณ„๋„)์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ํฌ๊ด„์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ํŠน์ •ํ•œ ๊ฐ์ฒด๋ฅผ ์นญํ•  ๋•Œ ์ธ์Šคํ„ด์Šค๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ™์€ ์˜๋ฏธ๋ผ๊ณ  ๋ณด์…”๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์œ„์™€ ๊ฐ™์ด ์„ ์–ธ๋œ ํด๋ž˜์Šค์˜ ์ •์˜๋ฅผ ๊ฐ€์ง€๊ณ  new ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Car car = new Car();

 

๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†์„ฑ(property)๊ณผ ๊ธฐ๋Šฅ(function)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • ์†์„ฑ
    • ํŠน์„ฑ, ํ•„๋“œ, ์ƒํƒœ์™€ ๊ด€๋ จ๋œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜
  • ๊ธฐ๋Šฅ
    • ํ•จ์ˆ˜, ํ–‰์œ„์™€ ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ
public class CarTest {
    public static void main(String[] args) {
        Car car = new Car("RANGE ROVER EVOQUE", "2018", "RED", 50L, 200L);
        car.brake();
        car.accelerate();
    }
}

์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ํด๋ž˜์Šค์— ์ •์˜๋˜์–ด ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์œ„์ฒ˜๋Ÿผ . ์„ ํ™œ์šฉํ•ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


<์ฐธ๊ณ  ์ž๋ฃŒ>

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

 

 

[Java] ์ž๋ฐ” ํด๋ž˜์Šค(Class) ์‚ฌ์šฉ๋ฒ•(์„ ์–ธ, ์ƒ์„ฑ, ์‚ฌ์šฉ) & ์˜ˆ์ œ

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ OOP(๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋„ ํŠน์ • ์ œํ’ˆ์„ ๋งŒ๋“ค ๋•Œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ€ํ’ˆ๋“ค์„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด ํ•˜๋‚˜๋กœ ์กฐ๋ฆฝํ•ด์„œ ์ œํ’ˆ์„ ์ƒ์‚ฐํ•˜๋“ฏ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ๋„

coding-factory.tistory.com

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ