๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’กCS/Java

ํด๋ž˜์Šค, ๊ฐ์ฒด, ์ธ์Šคํ„ด์Šค๋ž€?

by hyeon-z 2023. 6. 7.

 

ํด๋ž˜์Šค(class)

 

์ •์˜: ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•ด ๋†“์€ ๊ฒƒ, ๊ฐ์ฒด์˜ ์„ค๊ณ„๋„ ๋˜๋Š” ํ‹€

์šฉ๋„: ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

 

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

 

ํด๋ž˜์Šค๋Š” ์†์„ฑ(field)์™€ ๋™์ž‘(method)์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

class Main {
    // field area
    private int a = 0;

    // method area
    public void run() {
        a += 1;
    }
}

 

๊ฐ์ฒด(Object)

 

์ •์˜: ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์— ๊ตฌํ˜„ํ•  ๋Œ€์ƒ, ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•  ๋Œ€์ƒ

์šฉ๋„: ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„

 

์ธ์Šคํ„ด์Šค(Instance)

 

์ •์˜: ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์— ๊ตฌํ˜„๋œ ์‹ค์ฒด, ๋Ÿฐํƒ€์ž„์— ๋™์ž‘ํ•˜๋Š” ๊ฐ์ฒด๋กœ ๊ตฌ์ฒด์ ์ธ ์‹ค์ฒด์ด๋‹ค.

 

๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค

 

๐Ÿ’กํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šคํ™”(instantiate)๋ผ๊ณ  ํ•˜๋ฉฐ, ์–ด๋–ค ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๊ทธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(instance)๋ผ๊ณ  ํ•œ๋‹ค.

 

์ธ์Šคํ„ด์Šค์™€ ๊ฐ์ฒด๋Š” ๊ฐ™์€ ์˜๋ฏธ์ด์ง€๋งŒ, ๊ฐ์ฒด๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ํฌ๊ด„์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ธ์Šคํ„ด์Šค๋Š” ์–ด๋–ค ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๋ถ•์–ด๋นต ์˜ˆ์‹œ(Class, Object, Instance)

 

๋ถ•์–ด๋นต์„ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด์ž!

 

์ค€๋น„๋ฌผ: ๋ถ•์–ด๋นต์„ ์ฐ๊ธฐ ์œ„ํ•œ ํ‹€, ๋ฐ€๊ฐ€๋ฃจ ๋ฐ˜์ฃฝ, ํŒฅ

๋งŒ๋“œ๋Š” ๊ณผ์ •: ๋ถ•์–ด๋นต ํ‹€์— ๋ฐ€๊ฐ€๋ฃจ ๋ฐ˜์ฃฝ๊ณผ ํŒฅ์„ ๋„ฃ๊ณ  ๊ตฝ๋Š”๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ Class, Object, Instance๊ด€์ ์—์„œ ์‚ดํŽด๋ณด์ž.

๋ถ•์–ด๋นต ํ‹€: Class
๋ถ•์–ด๋นต: Object
๋งŒ๋“ค์–ด์ง„ ๊ฐ๊ฐ์˜ ๋ถ•์–ด๋นต: Instance
๋ถ•์–ด๋นต์„ ๊ตฝ๋‹ค: ์ธ์Šคํ„ด์Šค(Instance)ํ™” ํ•˜๋‹ค.

 

๋จผ์ € ๋ถ•์–ด๋นต ํ‹€, ์ฆ‰ Class์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์ž.

๋ถ•์–ด๋นต๋“ค์€ '๋ฐ€๊ฐ€๋ฃจ ๋ฐ˜์ฃฝ ์–‘'๊ณผ 'ํŒฅ ์–‘'์ด๋ผ๋Š” ๋ณ€์ˆ˜(member variable)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋˜ํ•œ '๊ตฝ๋‹ค'๋ผ๋Š” ๋ฉ”์„œ๋“œ(member method)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๐Ÿฅ– ๋ถ•์–ด๋นต ํ‹€ Class

 

๋ถ•์–ด๋นต์„ ๊ตฌ์šธ ์ค€๋น„๊ฐ€ ๋๋‚ฌ๋‹ค!

๋ถ•์–ด๋นต๋“ค์— ๋ฐ€๊ฐ€๋ฃจ ๋ฐ˜์ฃฝ๊ณผ ํŒฅ์„ ๋„ฃ์–ด์„œ 3๊ฐœ์˜ ๋ถ•์–ด๋นต์„ ๋งŒ๋“ค์–ด๋ณด์ž.

 

๊ฐ๊ฐ์˜ ๋ถ•์–ด๋นต์— ์„œ๋กœ ๋ฐ€๊ฐ€๋ฃจ ๋ฐ˜์ฃฝ๊ณผ ํŒฅ์˜ ์–‘์˜ ๋‹ค๋ฅด๊ฒŒ ์ง‘์–ด๋„ฃ๊ณ  '๊ตฝ๋‹ค()'๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ถ•์–ด๋นต์„ ๊ตฌ์›Œ๋ด…์‹œ๋‹ค.

~~~~~ ์ธ์Šคํ„ด์Šคํ™”๋˜๋Š” ์ค‘~~~~~

 

๐Ÿฅ–๋ถ•์–ด๋นต ์™„์„ฑ๐Ÿฅ– => ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง

๋ถ•์–ด๋นต์„ ๋ณด๋ฉด ๊ฐ™์€ ํ‹€์—์„œ ๊ตฌ์›Œ์กŒ์ง€๋งŒ ๋ชจ๋‘ ๋‹ค๋ฅธ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ฐ๊ฐ์˜ ๊ฐœ์„ฑ์„ ๊ฐ€์ง„ ๋ถ•์–ด๋นต๋“ค! ์ฆ‰, ์‹ค์ œ ๋ถ•์–ด๋นต๋“ค์„ ์ธ์Šคํ„ด์Šค(instance)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

public class FishBread {
    private String name;
    private int flour;
    private int redbean;

    public FishBread(String name, int flour, int redbean) {
        this.name = name;
        this.flour = flour;
        this.redbean = redbean;
    }

    public void bake() {
        System.out.println(name + " ๋ถ•์–ด๋นต์ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค!");
    }

    public static void main(String[] args) {
        FishBread fb = new FishBread("๋“ฌ๋ฟ", 100, 100);
        fb.bake();
    }
}

 

Reference

์ธ์Šคํ„ด์Šค๋ž€?

๋Œ“๊ธ€