๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ/JAVA

Java - ๊ฐœ์š” (๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)

by 0_0๐Ÿ–ค 2023. 6. 28.
๋ฐ˜์‘ํ˜•

 

 

- ์œˆ๋„์šฐ, ๋งฅOS, ๋ฆฌ๋ˆ…์Šค ๋“ฑ ๋ชจ๋“  ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ

- ๋ฉ”๋ชจ๋ฆฌ(RAM)๋ฅผ ์ž๋™ ์ •๋ฆฌํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์šฉ์ด

- ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Open source Library)๊ฐ€ ํ’๋ถ€

- ๋จผ์ € ๊ฐ์ฒด(๋ถ€ํ’ˆ)๋ฅผ ๋งŒ๋“ค๊ณ , ๊ฐ์ฒด๋“ค์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ๋” ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑ์‹œํ‚ค๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)์— ์ตœ์ ํ™”๋œ ์–ธ์–ด

 

 

 

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

- ๊ฐ์ฒด๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ณ  ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค์„ ์กฐ๋ฆฝํ•ด์„œ ํ•˜๋‚˜์˜ ์™„์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก 

- ์—ฌ๋Ÿฌ ๋…๋ฆฝ์ ์ธ ๋ถ€ํ’ˆ๋“ค์˜ ์กฐํ•ฉ, ์ฆ‰ ๊ฐ์ฒด๋“ค์˜ ์œ ๊ธฐ์ ์ธ ํ˜‘๋ ฅ๊ณผ ๊ฒฐํ•ฉ์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„

 

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

 - ๊ฐ์ฒด ์ง€ํ–ฅ์  ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค

   ์˜ˆ ) ์ปดํ“จํ„ฐ ๋ถ€ํ’ˆ์„ ๊ฐˆ์•„ ๋ผ์šธ ๋•Œ, ํ•ด๋‹นํ•˜๋Š” ๋ถ€ํ’ˆ๋งŒ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ถ€ํ’ˆ๋“ค์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ฐ์ฒด ์ง€ํ–ฅ์  ์›๋ฆฌ๋ฅผ ์ž˜ ์ ์šฉํ•ด ๋‘” ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ๊ฐ์˜ ๋ถ€ํ’ˆ๋“ค์ด ๊ฐ์ž์˜ ๋…๋ฆฝ์ ์ธ ์—ญํ• ์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํ•˜๋Š” ๋ฐ ์œ ๋ฆฌํ•˜๋‹ค.

  - ๋…๋ฆฝ์ ์ธ ์—ญํ• ์˜ ๊ฐ๊ฐ์˜ ๋ถ€ํ’ˆ์„ ์žฌ์‚ฌ์šฉํ•ด ๋ฐ˜๋ณต์  ์ฝ”๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•ด ์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  -  ์‹ค์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ณ  ๊ฒฝํ—˜ํ•˜๋Š” ์„ธ๊ณ„๋ฅผ ์ตœ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์„ ํ†ตํ•ด ๋ฐœ์ „ํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์—, ๋ณด๋‹ค ์ธ๊ฐ„ ์นœํ™”์ ์ด๊ณ  ์ง๊ด€์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ์šฉ์ดํ•˜๋‹ค.

  

 

 (2) ๊ฐ์ฒด (Object)

 - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„์ด์ž ์‹œ์ž‘์ 

 - ์‹ค์ œ ์„ธ๊ณ„๋Š” ๊ฐ์ฒด๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ณด์—ฌ์ง€๋Š” ํ˜„์ƒ๊ณผ ์‚ฌ๊ฑด์€ ๊ฐ์ฒด๋“ค๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ „์ œ์—์„œ ์ถœ๋ฐœ

 - ๋ชจ๋“  ์‹ค์žฌํ•˜๋Š” ๋Œ€์ƒ ( ์šฐ๋ฆฌ ๋ˆˆ์— ๋ณด์ด๋Š” ์œ ํ˜•์˜ ๋Œ€์ƒ๊ณผ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ์–ด๋–ค ๋…ผ๋ฆฌ, ์‚ฌ์ƒ, ์ฒ ํ•™, ๊ฐœ๋…, ๊ณต์‹ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฌดํ˜•์˜ ๋Œ€์ƒ๋“ค๋„ ํฌํ•จ )

 - ์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ณ  ๋Š๋ผ๊ณ  ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ ๋ชจ๋“  ๊ฒƒ

 

class Car {
	// ์†์„ฑ ์ •์˜
    String company;
    String model;
    String color;
    int wheels;
    boolean isConvertible;
    
    // ๊ธฐ๋Šฅ ์ •์˜
    void startEngine() {
    	System.out.println("์ฒด์ธ์˜ ์ž ๊ธˆ์„ ํ‘ผ๋‹ค");
    }
    void moveForward() {
    	System.out.println("์ž์ „๊ฑฐ๊ฐ€ ์•ž์œผ๋กœ ์›€์ง์ธ๋‹ค");
    }
    void moveBackward() {
    	System.out.println("์ž์ „๊ฑฐ๊ฐ€ ๋’ค๋กœ ์›€์ง์ธ๋‹ค");
    }
}

 - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์ถ”์ƒํ™”์‹œ์ผœ ์†์„ฑ(state)๊ณผ ๊ธฐ๋Šฅ(behavior)์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ ํ›„, ๊ฐ๊ฐ ๋ณ€์ˆ˜(variable)์™€ ํ•จ์ˆ˜(function)๋กœ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

 

 

 (3) ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 4๊ฐ€์ง€ ํŠน์ง•

  1. ์ถ”์ƒํ™”(Abstration) : ๊ฐ์ฒด์˜ ๋ถˆํ•„์š”ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ œ๊ฑฐํ•˜๊ณ  ๊ณตํ†ต์„ฑ๊ณผ ๋ณธ์งˆ์ ์ธ ๋ถ€๋ถ„์„ ๋ชจ์•„ ์ถ”์ถœ

 

  2. ์ƒ์† (Inheritance) : ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ์žฌํ™œ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ๋ฒ• ์š”์†Œ.

                                      ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ์˜ ๋ฐ˜๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

                                      ์ž์‹ ํด๋ž˜์Šค์— extends ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ํ™•์žฅ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ. ์ƒ์† ๊ด€๊ณ„์—์„œ๋Š”

                                      ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ (method overriding)์„ ์ด์šฉ, ๋ถ€๋ชจ ์š”์†Œ์˜ ์ฝ”๋“œ ์‹คํ–‰ ๋‚ด์šฉ์„ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.

                                      ์ƒ์† ๊ด€๊ณ„์˜ ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„์— ๋น„ํ•ด ์ถ”์ƒํ™”์˜ ์ •๋„๊ฐ€ ๋‚ฎ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

                                       →  ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ชจ๋“  ๊ตฌ์ฒด์  ๋‚ด์šฉ๋“ค์„ ์ •์˜ํ•ด๋‘๊ณ  ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ๋‹ค ์žฌ์‚ฌ์šฉ

 

  3. ๋‹คํ˜•์„ฑ : ์–ด๋–ค ๊ฐ์ฒด์˜ ์†์„ฑ์ด๋‚˜ ๊ธฐ๋Šฅ์ด ๋งฅ๋ฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ (๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๊ฝƒ)

                    ์˜ˆ ) ์–ด๋–ค ์ค‘๋…„์˜ ๋‚จ์„ฑ ... ํšŒ์‚ฌ์—์„œ๋Š” ๊ณผ์žฅ, ๋™์•„๋ฆฌ์—์„œ ์ด๋ฌด, ๋ถ€๋ชจ๋‹˜์—๊ฒŒ๋Š” ์ž์‹, ์ž์‹์—๊ฒŒ๋Š” ์•„๋ฒ„์ง€ ๋“ฑ...

                    ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๊ณผ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ.

 

 

 man ์ธํ„ฐํŽ˜์ด์Šค

public interface man {
	public abstract void start()
    void part(); // public abstract ํ‚ค์›Œ๋“œ ์ƒ๋žต ๊ฐ€๋Šฅ
}

 

man ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์€ atHome ํด๋ž˜์Šค

public class atHome implements man{ // man์„ ๊ตฌ์ฒดํ™”ํ•œ ์ž๋ฐ” ํด๋ž˜์Šค
    // implements ์™€ extends์˜ ์ฐจ์ด์ 
    // implements๋Š” ๋ถ€๋ชจ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(์žฌ์ •์˜) ํ•ด์•ผ ํ•จ. ๋‹ค์ค‘์ƒ์† ๊ฐ€๋Šฅ
    // ๋ณดํ†ต implements -> interface ์ƒ์† / extends -> class ์ƒ์†
    
    @Override // ์–ด๋…ธํ…Œ์ด์…˜ - ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ override ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์„ ์–ธ
    public void part() { // swTech์—์„œ ์ •์˜๋œ ๋ฉ”์†Œ๋“œ ์žฌ์ •์˜
    	System.out.println("๊ฐ€์žฅ");
        System.out.println("์•„๋น ");
        System.out.println("๋‚จํŽธ");
    }
}

 

  - ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ์˜ค๋ฒ„๋กœ๋”ฉ๋„ ์ค‘์š”ํ•œ ์˜ˆ์‹œ์ด๋‚˜ ๋” ์ค‘์š”ํ•œ ๋‹คํ˜•์„ฑ์˜ ์ •์˜๋Š” ํ•œ ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ.

(์ƒ์œ„ ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋กœ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ)

  

 4. ์บก์Šํ™”(Encapsulation) : ํด๋ž˜์Šค ์•ˆ์— ์„œ๋กœ ์—ฐ๊ด€ ์žˆ๋Š” ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ๋“ค์„ ํ•˜๋‚˜์˜ ์บก์Š(capsule)๋กœ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ด ์™ธ๋ถ€์—์„œ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„๋‘๊ธฐ ์œ„ํ•จ. ์™ธ๋ถ€์—์„œ ๋งˆ์Œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์บก์Šํ™” ์ž‘์—…์„ ํ•œ๋‹ค. ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์บก์Šํ™”๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

 

  - ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ(data protection) : ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์— ์ •์˜๋œ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ๋“ค์„ ๋ณดํ˜ธ

  - ๋ฐ์ดํ„ฐ ์€๋‹‰(data hiding) : ๋‚ด๋ถ€์˜ ๋™์ž‘์„ ๊ฐ์ถ”๊ณ  ์™ธ๋ถ€์—๋Š” ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋…ธ์ถœ

 

 ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์— ์ •์˜๋œ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ๋“ค์„ ๋ณดํ˜ธํ•˜๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ๊ฐ ๊ฐ์ฒด ๊ณ ์œ ์˜ ๋…๋ฆฝ์„ฑ๊ณผ ์ฑ…์ž„ ์˜์—ญ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ง€ํ‚ค๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์ด๋‹ค.

 

 

  ์บก์Šํ™” ๋ฐฉ๋ฒ• 1. ์ ‘๊ทผ ์ œ์–ด์ž(access modifiers)๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

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

  - public, default, protected, private ์ œ์–ด์ž๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ (์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ๋” ์ข์€ ์ ‘๊ทผ ๋ฒ”์œ„)

์ ‘๊ทผ ์ œ์–ด์ž ํด๋ž˜์Šค ๋‚ด ํŒจํ‚ค์ง€ ๋‚ด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค ํŒจํ‚ค์ง€ ์™ธ ์„ค๋ช…
private O X X X ๋™์ผ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
default O O X X ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
protected O O O X ๋™์ผ ํŒจํ‚ค์ง€ + ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
public O O O O ์ ‘๊ทผ ์ œํ•œ ์—†์Œ

 

 

packege package1; // ํŒจํ‚ค์ง€๋ช… package1

class Test { // Test ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋Š” default
	public static void main(String[] args) {
    	SuperClass superClass = new SuperClass();
        
 //       System.out.println(parent.a); // ๋™์ผ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ ๋ฐœ์ƒ
        System.out.println(superClass.b);
        System.out.println(superClass.c);
        System.out.println(superClass.d);
    }
}

public class SuperClass { // SuperClass ํด๋ž˜์Šค๋Š” public์ด ์ ‘๊ทผ ์ œ์–ด์ž๋กœ ์‚ฌ์šฉ๋จ
    private int a = 1; // private ์ ‘๊ทผ์ œ์–ด์ž
    int b = 2;
    protected int c = 3; // protected ์ ‘๊ทผ์ œ์–ด์ž
    public int d = 4; // public ์ ‘๊ทผ ์ œ์–ด์ž
    
    public void printEach() {
    	System.out.println(a); // ์ ‘๊ทผ์ œ์–ด์ž private๊ฐ€ ๋™์ผ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
        System.out.println(b);
        System.out.println(c);
        System.out.pringln(d);
    }
}

// ์ถœ๋ ฅ๊ฐ’
2
3
4

 

์บก์Šํ™” ๋ฐฉ๋ฒ• 2. getter/setter ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ์„ ํƒ์ ์œผ๋กœ ์™ธ๋ถ€์— ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•  ์†์„ฑ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์„ ์†์„ฑ์„ getter/setter๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•ด์ค€๋‹ค.

- ํ•„๋“œ ์ ‘๋‘์‚ฌ๋กœ get- , set-์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ bin ๊ทœ์•ฝ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

- getter : ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์—ญํ• ์„ ์ฃผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ’์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉํ•œ๋‹ค.

 

- setter : private๋กœ ์„ ์–ธ๋œ ํ•„๋“œ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ. ๊ฐ์ฒด๋Š” ์ž…๋ ฅ ๊ฐ’์„ setter ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ ๊ฐ’์œผ๋กœ ๋„˜๊ฒจ์ฃผ๊ณ  ๊ฐ’์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๋‚˜์„œ ๊ทธ ๊ฐ’์ด ํ•„๋“œ์˜ ๊ฐ’์œผ๋กœ ์ ์ ˆํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ €์žฅํ•œ๋‹ค. 

์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

 1.  getter

 - ์ ‘๊ทผ ์ œํ•œ์ž : public

 - ๋ฆฌํ„ด ํƒ€์ž… : ํ•„๋“œ์˜ ๋ฆฌํ„ด ํƒ€์ž…

 - ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ : get + ํ•„๋“œ ์ด๋ฆ„ (์ฒซ ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž)

 - ๋ฆฌํ„ด๊ฐ’ : ํ•„๋“œ ๊ฐ’

 

 2. setter

 - ์ ‘๊ทผ ์ œํ•œ์ž : public

 - ๋ฆฌํ„ด ํƒ€์ž… : void

 - ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ : set + ํ•„๋“œ ์ด๋ฆ„(์ฒซ ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž)

 - ๋งค๊ฐœ ๋ณ€์ˆ˜ ํƒ€์ž… : ํ•„๋“œ ํƒ€์ž… 

 

public class Car {
    private String model; // ํ•„๋“œ ์ ‘๊ทผ ์ œํ•œ์ž : private
    private String color;
    private int int wheels;
    
    public String getModel() { // getter
    	return model; 
    }
    public void setModel(String model) { // setter
    	this.model = model;
    }
    public String getColor() { // getter
    	return color;
    }
    public void setColor(String color) { // setter
    	this.color = color;
    }
    public int getWheels() { // getter
    	return wheels;
    }
    public void setWheels(int wheels) { // setter
    	this.wheels = wheels;
    }
}

 

- ๋งŒ์•ฝ ํ•„๋“œ ํƒ€์ž…์ด boolean์ผ ๊ฒฝ์šฐ, getter๋Š” get์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  is๋กœ ์‹œ์ž‘

 

 1. getter 

  - ์ ‘๊ทผ ์ œํ•œ์ž : public

  - ๋ฆฌํ„ด ํƒ€์ž… : ํ•„๋“œ ํƒ€์ž…

  - ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ : is + ํ•„๋“œ์ด๋ฆ„ (์ฒซ ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž)

  - ๋ฆฌํ„ด ๊ฐ’ : ํ•„๋“œ ๊ฐ’

 

 2. setter

 - ์ ‘๊ทผ ์ œํ•œ์ž : public

 - ๋ฆฌํ„ด ํƒ€์ž… : void

 - ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ : set + ํ•„๋“œ์ด๋ฆ„(์ฒซ ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž) (boolean ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ž‘์„ฑ)

 - ๋งค๊ฐœ ๋ณ€์ˆ˜ ํƒ€์ž… : ํ•„๋“œ ํƒ€์ž…

private boolean stop; // ํ•„๋“œ ์ ‘๊ทผ ์ œํ•œ์ž : private

// getter
public boolean inStop() {
	return stop;
}

// setter
public void setStop(boolean stop) {
	this.stop = stop;
}

 

 

๋ฐ˜์‘ํ˜•