Notice
Recent Posts
Recent Comments
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 31
Archives
Today
In Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

A Joyful AI Research Journey๐ŸŒณ๐Ÿ˜Š

[33] 230214 Java Ch. 6 ํด๋ž˜์Šค: 6. ํŒจํ‚ค์ง€์™€ ์ ‘๊ทผ ์ œํ•œ์ž, *Getter/Setter [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 33์ผ] ๋ณธ๋ฌธ

๐ŸŒณBootcamp Revision 2023โœจ/Spring Framework, Java

[33] 230214 Java Ch. 6 ํด๋ž˜์Šค: 6. ํŒจํ‚ค์ง€์™€ ์ ‘๊ทผ ์ œํ•œ์ž, *Getter/Setter [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 33์ผ]

yjyuwisely 2023. 2. 14. 12:47

230214 Tue 33rd class

Ch. 6 ํด๋ž˜์Šค
์ง„๋„: p. 286 ~ (๊ต์žฌ: ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ”, ์ €์ž: ์‹ ์šฉ๊ถŒ)
ํ•œ๋น›๋ฏธ๋””์–ด_ํ˜ผ๊ณต์ž_์šฉ์–ด์ง‘.pdf
์šฉ์–ด ์ฐธ๊ณ 

์ž๋ฐ” ์ ‘๊ทผ ์ œํ•œ์ž์˜ ์ข…๋ฅ˜์™€ ์ฐจ์ด(public, protected, private)

 

ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ” | ์‹ ์šฉ๊ถŒ - ๊ต๋ณด๋ฌธ๊ณ 

ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ” | ํ˜ผ์ž ํ•ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค! 1:1 ๊ณผ์™ธํ•˜๋“ฏ ๋ฐฐ์šฐ๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž์Šต์„œ (JAVA 8 &11 ์ง€์›) ์ด ์ฑ…์€ ๋…ํ•™์œผ๋กœ ์ž๋ฐ”๋ฅผ ๋ฐฐ์šฐ๋Š” ์ž…๋ฌธ์ž๊ฐ€ ‘๊ผญ ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์ œ๋Œ€๋กœ’ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„

product.kyobobook.co.kr

์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๊ธฐ์–ตํ•  ๊ฒƒ์„ ์ •๋ฆฌํ–ˆ๋‹ค. 


์ง€๋‚œ ์ˆ˜์—… ๋•Œ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๋‹ค์‹œ ๊ธฐ์–ตํ•  ๊ฒƒ

2023.02.13 - [1. Revision 2023/Java] - [32] 230213 Ch. 6 ํด๋ž˜์Šค(3): ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„์™€ ์ •์  ๋ฉค๋ฒ„

์ธ์Šคํ„ด์Šค: ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด
์ธ์Šคํ„ด์Šค(instance) ๋ฉค๋ฒ„: ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋ž€ ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ์ด๋“ค์€ ๊ฐ๊ฐ ์ธ์Šคํ„ด์Šค ํ•„๋“œ, ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์— ์†Œ์†๋œ ๋ฉค๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์—†์ด๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.


2023.02.01 - [1. Revision 2023/Java] - [24] 230201 Ch. 3 ์ž๋ฐ” ์—ฐ์‚ฐ์ž: ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์‹, ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜

๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ์ž(!) p. 113

๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ์ž๋Š” true๋ฅผ false๋กœ, false๋ฅผ true๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— boolean ํƒ€์ž…์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฐ์‚ฐ์ž ์„ค๋ช…
! ํ”ผ์—ฐ์‚ฐ์ž(x) ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true์ด๋ฉด false ๊ฐ’์„ ์‚ฐ์ถœ
ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false์ด๋ฉด true ๊ฐ’์„ ์‚ฐ์ถœ

๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด๋ฌธ๊ณผ ์ œ์–ด๋ฌธ์—์„œ ์กฐ๊ฑด์‹์˜ ๊ฐ’์„ ๋ถ€์ •ํ•˜๋„๋กํ•ด์„œ ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
๋˜ํ•œ ๋‘ ๊ฐ€์ง€ ์ƒํƒœ(true/false)๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋ฒˆ๊ฒฝํ•˜๋Š” ํ† ๊ธ€(toggle) ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•œ๋‹ค.


๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ์ž(!)๋Š” true ๊ฐ’์„ false๋กœ, false ๊ฐ’์„ true๋กœ ๋ฐ˜์ „์‹œ์ผœ์ค€๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 'if(์กฐ๊ฑด๋ฌธ)'์€ ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ ๊ฒฝ์šฐ if ๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ 'if(!์กฐ๊ฑด๋ฌธ)'์ด ๋˜๋ฉด, ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง“์ด๋ฉด ์ฐธ์œผ๋กœ ๋ฐ˜์ „์‹œํ‚ค๊ณ  ์ฐธ์ด๋ฉด ๊ฑฐ์ง“์œผ๋กœ ๋ฐ˜์ „์‹œํ‚จ๋‹ค. ๋”ฐ๋ผ์„œ ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง“์ผ ๋•Œ ๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ์ž(!)๋ฅผ ๋ถ™์ด๋ฉด ์ฐธ์œผ๋กœ ๋ฐ˜์ „๋˜๋ฏ€๋กœ if ๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค.์•„๋ž˜์˜ 'if(์กฐ๊ฑด๋ฌธ)'์€ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ์ง€๋‹Œ๋‹ค.

if(Bool_true == 0){ ... }
if(!Bool_true){ ... }

์ฐธ๊ณ : https://sweetnew.tistory.com/m/50


boolean isValid = true;

if (isValid == false) {
    System.out.println("Invalid");
}Copy

The above version is relatively easy to read, though it might be harder to do if the logical expression was more complex. Java has an alternative for us, though, in the form of the not operator:

boolean isValid = true;

if (!isValid) {
    System.out.println("Invalid");
}

์ฐธ๊ณ : https://www.baeldung.com/java-using-not-in-if-conditions

When applied to a boolean value, the not operator turns true to false and false to true:

System.out.println(!true);   // prints false 
System.out.println(!false);  // prints true 
System.out.println(!!false); // prints false

์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„
class A{
          //ํ•„๋“œ
          String Color;           //์ธ์Šคํ„ด์Šค ํ•„๋“œ
          int speed;               //์ธ์Šคํ„ด์Šค ํ•„๋“œ
          //์ƒ์„ฑ์ž
          //๋ฉ”์„œ๋“œ
          void run(){}             //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
}

์ •์  ๋ฉค๋ฒ„
class A{
          //ํ•„๋“œ
          static String Color; //์ •์  ํ•„๋“œ
          static int speed;     //์ •์  ํ•„๋“œ
          //์ƒ์„ฑ์ž
          //๋ฉ”์„œ๋“œ
          static void run(){} //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
}     

class ATest{
	public static void main(String[] args){
    	//์ •์  ๋ฉค๋ฒ„ ํ˜ธ์ถœ
        //๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ํด๋ž˜์Šค๋ช…์œผ๋กœ
        //ํ•„๋“œ ๋ฐ ๋ฉ”์„œ๋“œ ์—ฐ๊ฒฐ
        Static.Color = "black";
        Static.speed = 10;
        Static.run();
        
        //์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํ˜ธ์ถœ
        //๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด
        //ํ•„๋“œ ๋ฐ ๋ฉ”์„œ๋“œ ์—ฐ๊ฒฐ
        Instance in = new Instance();
        in.Color = "black";
        in.speed = 10;
        in.run();
int a = 10;
a = 20;(O)

final int a = 10; //final ํ•„๋“œ
static final int a = 10; //์ƒ์ˆ˜ ํ•„๋“œ

The static keyword means the value is the same for every instance of the class.
The final keyword means once the variable is assigned a value it can never be changed.

static ๊ฐ์ฒด๋งˆ๋‹ค ๊ฐ€์งˆ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ ํ˜น์€ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ
the value is the same for every instance of the class.
final ํ•œ ๋ฒˆ ๊ฐ’์ด ์ •ํ•ด์ง€๊ณ  ๋‚˜๋ฉด ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ํ•„๋“œ
once the variable is assigned a value it can never be changed.
static final ๋ชจ๋“  ์˜์—ญ์—์„œ ๊ณ ์ •๋œ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์ˆ˜

์ฐธ๊ณ : https://gobae.tistory.com/3


Ch. 6 ํด๋ž˜์Šค

์ฑ…์˜ ๋ชฉ์ฐจ
06-1 ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
06-2 ํ•„๋“œ
06-3 ์ƒ์„ฑ์ž
06-4 ๋ฉ”์†Œ๋“œ
06-5 ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„์™€ ์ •์  ๋ฉค๋ฒ„
06-6 ํŒจํ‚ค์ง€์™€ ์ ‘๊ทผ ์ œํ•œ์ž

6.6 ํŒจํ‚ค์ง€์™€ ์ ‘๊ทผ ์ œํ•œ์ž

์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€(package)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 
์ž๋ฐ”์—์„œ ํŒจํ‚ค์ง€(package)๋ž€ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค. 

์œˆ๋„์šฐ

ํด๋”
๋ฌธ์„œ\pdf๋ฌธ์„œ\abc.pdf
๋ฌธ์„œ\์—‘์…€๋ฌธ์„œ\abc.xsl
๋ฌธ์„œ\ํ•œ๊ธ€๋ฌธ์„œ\abc.hwp
์ž๋ฐ”

ํŒจํ‚ค์ง€
์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค

๋ฌธ์„œ.pdf๋ฌธ์„œ.abcํด๋ž˜์Šค
๋ฌธ์„œ.์—‘์…€๋ฌธ์„œ.abcํด๋ž˜์Šค
๋ฌธ์„œ.ํ•œ๊ธ€๋ฌธ์„œ.abcํด๋ž˜์Šค

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

์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค
java.lang.String

 

์œ„์˜ ์˜ˆ์ œ์—์„œ ์ž๋ฐ”์˜ String ํด๋ž˜์Šค๋Š” java.lang ํŒจํ‚ค์ง€์— ์†ํ•œ ํด๋ž˜์Šค๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


6.6.1 ํŒจํ‚ค์ง€ ์„ ์–ธ p. 287

package ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€;
public class ClassName { ... }

ex) Car ํด๋ž˜์Šค๊ฐ€ com.mycompany ํŒจํ‚ค์ง€์— ์†ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด Car ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

package com.mycompany;
public class Car {...}

ํŒจํ‚ค์ง€ ์ด๋ฆ„์˜ ๊ทœ์น™
- ์ˆซ์ž๋กœ ์‹œ์ž‘ X, _, $๋ฅผ ์ œ์™ธํ•œ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
- java๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒจํ‚ค์ง€๋Š” ์ž๋ฐ” ํ‘œ์ค€ API์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
- ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค.  

ํŒจํ‚ค์ง€ ์ด๋ฆ„์˜ ์ค‘๋ณต ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•
: ๋„๋ฉ”์ธ ์ด๋ฆ„ ์—ญ์ˆœ + ํ”„๋กœ์ ํŠธ ์ด๋ฆ„

com.samsung.projectname
com.hyundai.projectname
com.lg.projectname
org.apache.projectname

1) ์ดํด๋ฆฝ์Šค์—์„œ ํŒจํ‚ค์ง€ ์ƒ์„ฑ๊ณผ ํด๋ž˜์Šค ์ƒ์„ฑ

ex) ํŒจํ‚ค์ง€ ์ด๋ฆ„: sec06.exam01
Name: Car


2) import ๋ฌธ p. 290

package → import → class ์„ ์–ธ ์ˆœ์ด๋‹ค. 

์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†Œ์†๋˜์–ด ์žˆ๋‹ค๋ฉด, import๋ฌธ์œผ๋กœ ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ๊ฒƒ์ž„์„ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค.

import ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค์ด๋ฆ„;
import ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.*;

๋งŒ์•ฝ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์ด ๋™์ผํ•œ ํŒจํ‚ค์ง€ ์†Œ์†์ด๋ผ๋ฉด ๊ฐœ๋ณ„ import๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” *๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ํŒจํ‚ค์ง€์— ์†Œ์†๋œ ํด๋ž˜์Šค๋“ค์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž„์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

import ํŒจํ‚ค์ง€์ด๋ฆ„.ํด๋ž˜์Šค์ด๋ฆ„;
import ํŒจํ‚ค์ง€์ด๋ฆ„.*;

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

์ธํ„ฐํŽ˜์ด์Šค(interface)๋ž€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํ‹€์„ ์ œ๊ณตํ•˜๋ฉด์„œ, ๋‹ค๋ฅธ ํด๋ž˜์Šค ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ๋งค๊ฐœ ์—ญํ• ๊นŒ์ง€ ๋‹ด๋‹นํ•˜๋Š” ์ผ์ข…์˜ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒ์„ฑ์ž, ํ•„๋“œ, ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค(interface)๋Š” ์˜ค๋กœ์ง€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ์™€ ์ƒ์ˆ˜๋งŒ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ : http://www.tcpschool.com/java/java_polymorphism_interface

import ๋ฌธ์„ ์„ ์–ธํ•  ๋•Œ ๋ณ„ํ‘œ(*)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ด๋‹น ํŒจํ‚ค์ง€์— ํฌํ•จ๋œ ๋‹ค๋ฅธ ๋ชจ๋“  ํ•˜์œ„ ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค๊นŒ์ง€ ํฌํ•จํ•ด ์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

import java.awt.*;
import java.util.*;

์ฆ‰, ์œ„์™€ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ import ๋ฌธ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ import ๋ฌธ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

import java.*;

์˜ˆ์ œ) import๋ฌธ
Tire ํด๋ž˜์Šค๋Š” import๋œ ๋‘ ํŒจํ‚ค์ง€(hankook, kumho)์— ๋ชจ๋‘ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์ „์ฒด ์ด๋ฆ„์ด ๊ธฐ์ˆ ๋˜์–ด์•ผ ํ•œ๋‹ค. 

package com.mycompany;
import exam06.hankook.Tire;
import exam06.hankook.ShowTire;
//import exam06.kumho.Tire;
//import exam06.kumho.BigWidthTire;
import exam06.kumho.*;
import exam06.hyundai.*;

public class Car {
	//ํ•„๋“œ
	ShowTire tire1 = new ShowTire(); //ShowTire ํด๋ž˜์Šค๋ฅผ ํฌํ•จ์‹œ์ผœ๋ผ(Car ํด๋ž˜์Šค์™€ ShowTireํด๋ž˜์Šค ๊ฐ„์˜ ํฌํ•จ๊ด€๊ณ„)
	Tire tire2 = new Tire(); //ํ•œ๊ตญ Tire ํด๋ž˜์Šค๋ฅผ ํฌํ•จ์‹œ์ผœ๋ผ(Carํด๋ž˜์Šค์™€  Tireํด๋ž˜์Šค ๊ฐ„์˜ ํฌํ•จ๊ด€๊ณ„)
	BigWidthTire tire3 = new BigWidthTire(); //BigWidthTire ํด๋ž˜์Šค๋ฅผ ํฌํ•จ์‹œ์ผœ๋ผ(Carํด๋ž˜์Šค์™€  BigWidthTireํด๋ž˜์Šค ๊ฐ„์˜ ํฌํ•จ๊ด€๊ณ„)
	Tire tire4 = new Tire(); //๊ธˆํ˜ธ Tire ํด๋ž˜์Šค๋ฅผ ํฌํ•จ์‹œ์ผœ๋ผ(Carํด๋ž˜์Šค์™€  Tireํด๋ž˜์Šค ๊ฐ„์˜ ํฌํ•จ๊ด€๊ณ„)
	Engine engine = new Engine(); //Engine ํด๋ž˜์Šค๋ฅผ ํฌํ•จ์‹œ์ผœ๋ผ(Carํด๋ž˜์Šค์™€ Engineํด๋ž˜์Šค ๊ฐ„์˜ ํฌํ•จ๊ด€๊ณ„) 
}

6.6.2 ์ ‘๊ทผ ์ œํ•œ์ž (Access Modifier) p. 293

์ ‘๊ทผ ์ œํ•œ์ž๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํด๋ž˜์Šค ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. 

์ ‘๊ทผ ์ œํ•œ์ด ๊ฐ•ํ™”์ˆœ: public > protected > default > private

์ ‘๊ทผ ์ œ์–ด์ž ๊ฐ™์€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๊ฐ™์€ ํŒจํ‚ค์ง€์˜ ๋ฉค๋ฒ„ ์ž์‹ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๊ทธ ์™ธ์˜ ์˜์—ญ
public โ—‹ โ—‹ โ—‹ โ—‹
protected โ—‹ โ—‹ โ—‹ X
default โ—‹ โ—‹ X X
private โ—‹ X X X

ํด๋ž˜์Šค ์•ž์—๋Š” public, default๋งŒ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 


1) public ์ ‘๊ทผ ์ œํ•œ์ž: ๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ ์™ธ๋ถ€ ํด๋ž˜์Šค๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
๋ชจ๋“  ํŒจํ‚ค์ง€์—์„œ ์ œํ•œ ์—†์ด ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค.

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



2) protected ์ ‘๊ทผ ์ œํ•œ์ž: ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋˜๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
๊ฐ™์€ ํŒจํ‚ค์ง€์— ์†ํ•˜๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†ํ•œ ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹น ์ž์‹ ํด๋ž˜์Šค๋ผ๋ฉด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
์ƒ์† O

protected ์ ‘๊ทผ ์ œํ•œ์ž

3) default ์ ‘๊ทผ ์ œํ•œ์ž: ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์†Œ์†๋œ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ œํ•œ์ž๋ฅผ ์•„๋ฌด๊ฒƒ๋„ ์ ์ง€ ์•Š์œผ๋ฉด default ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ€์ง„๋‹ค. 
๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค.
์ƒ์† X

default ์ ‘๊ทผ ์ œํ•œ์ž


4) private ์ ‘๊ทผ ์ œํ•œ์ž: ๋‹จ์–ด ๋œป๋Œ€๋กœ ๊ฐœ์ธ์ ์ธ ๊ฒƒ์ด๋ผ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋„๋ก ํ•œ๋‹ค.
์˜ค๋กœ์ง€ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ฐ™์€ ํŒจํ‚ค์ง€์—ฌ๋„ ์ ‘๊ทผ์ด ์•ˆ ๋œ๋‹ค. 

private ์ ‘๊ทผ ์ œํ•œ์ž

๊ทธ๋ฆผ ์ฐธ๊ณ : http://www.tcpschool.com/java/java_modifier_accessModifier


6.6.3 ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ p. 294

ํด๋ž˜์Šค ์•ž์—๋Š” public, default๋งŒ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

1) default ์ ‘๊ทผ ์ œํ•œ

ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ public์„ ์ƒ๋žตํ–ˆ๋‹ค๋ฉด ํด๋ž˜์Šค๋Š” default ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ€์ง„๋‹ค.
๊ฐ™์€ ํŒจํ‚ค์ง€์—์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ์ œํ•œ๋œ๋‹ค.

default ์ ‘๊ทผ ์ œํ•œ์ž๊ฐ™์€ ํŒจํ‚ค์ง€์— ์†Œ์†๋œ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ œํ•œ์ž๋ฅผ ์•„๋ฌด๊ฒƒ๋„ ์ ์ง€ ์•Š์œผ๋ฉด default ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ€์ง„๋‹ค. 
๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค.

default ์ ‘๊ทผ ์ œํ•œ์ž


2) public ์ ‘๊ทผ ์ œํ•œ

ํด๋ž˜์Šค๊ฐ€ public ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ€์ง€๋ฉด, ๊ฐ™์€ ํŒจํ‚ค์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ๋„ ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

public ์ ‘๊ทผ ์ œํ•œ์ž๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ ์™ธ๋ถ€ ํด๋ž˜์Šค๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
๋ชจ๋“  ํŒจํ‚ค์ง€์—์„œ ์ œํ•œ ์—†์ด ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค.

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

์˜ˆ์ œ) ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ(1)

package exam06.package1;

class A {} //default ์ ‘๊ทผ ์ œํ•œ

์˜ˆ์ œ) ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ(2)
B ํด๋ž˜์Šค๋Š” A ํด๋ž˜์Šค์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€์ด๋ฏ€๋กœ A ํด๋ž˜์Šค์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

package exam06.package1;

public class B {
	//B ํด๋ž˜์Šค๋Š” A ํด๋ž˜์Šค ํฌํ•จํ•œ๋‹ค. 
	//int a
	//์ฐธ์กฐ ํƒ€์ž…, ์ฐธ์กฐ ๋ณ€์ˆ˜
	//A์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์“ด๋‹ค. 
	A a; //A ํด๋ž˜์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅ(ํ•„๋“œ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.)
}

์˜ˆ์ œ) ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ(3)
C ํด๋ž˜์Šค๋Š” A ํด๋ž˜์Šค์™€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์ด๋ฏ€๋กœ default ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ–๋Š” A ํด๋ž˜์Šค์—๋Š” ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š์ง€๋งŒ, public ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ–๋Š” B ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ž˜์„œ C ํด๋ž˜์Šค์—์„œ B ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•„๋“œ ์„ ์–ธ ๋ฐ ์ƒ์„ฑ์ž/๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

package exam06.package1;

public class C {
	//Aํด๋ž˜์Šค๋Š” default ์ ‘๊ทผ์ œํ•œ์ž (๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‚˜, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€)
	//A a;
	//Bํด๋ž˜์Šค๋Š” public ์ ‘๊ทผ์ œํ•œ์ž (๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‚˜, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ)
	B b;
}

6.6.4 ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ œํ•œ p. 296

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์–ด๋””์—์„œ๋‚˜ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
์ƒ์„ฑ์ž๊ฐ€ ์–ด๋–ค ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ–๋Š๋ƒ์— ๋”ฐ๋ผ ํ˜ธ์ถœ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.
์ƒ์„ฑ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด public, protected, default, private ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ€์ง„๋‹ค.

ex) ์ž๋ฐ”๋กœ db์ด์šฉํ•  ๋•Œ ํšŒ์› ๊ฐ€์ž… ์ •๋ณด์˜ ์ ‘๊ทผ ์ž์ฒด๋ฅผ ๋ง‰๊ธฐ

public class ClassName{
	//public ์ ‘๊ทผ ์ œํ•œ
    public ClassName(...){...}
    
    //protected ์ ‘๊ทผ ์ œํ•œ
    protected ClassName(...){...}
    
    //default ์ ‘๊ทผ ์ œํ•œ
    ClassName(...){...}
    
    //private ์ ‘๊ทผ ์ œํ•œ
    private ClassName(...){...}
}

์˜ˆ์ œ) ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ œํ•œ(1) 

package exam06.package1;

public class A {
	//ํ•„๋“œ
	//int a; ๊ธฐ๋ณธํƒ€์ž…(์ธ์Šคํ„ด์Šค ํ•„๋“œ)
	A a1 = new A(true); //์ฐธ์กฐ ํƒ€์ž…
	A a2 = new A(1); //์ฐธ์กฐํƒ€์ž…
	A a3 = new A("๋ฌธ์ž์—ด");
	
	//์ƒ์„ฑ์ž
	public A(boolean b) {} 
	A(int b){}	//default
	private A(String s) {}
	
	//๋ฉ”์„œ๋“œ
}

 

์˜ˆ์ œ) ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ œํ•œ(2)

package exam06.package1;

public class B {
	//B ํด๋ž˜์Šค๋Š” A ํด๋ž˜์Šค ํฌํ•จํ•œ๋‹ค. 
	//ํ•„๋“œ
	//int a
	//์ฐธ์กฐ ํƒ€์ž…, ์ฐธ์กฐ ๋ณ€์ˆ˜
	//A์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์“ด๋‹ค. 
	A a1 = new A(true); //์ฐธ์กฐ ํƒ€์ž…
	A a2 = new A(1); //์ฐธ์กฐ ํƒ€์ž…
	//A a3 = new A("๋ฌธ์ž์—ด"); //private ์ƒ์„ฑ์ž ์ ‘๊ทผ ๋ถˆ๊ฐ€(์ปดํŒŒ์ผ ์—๋Ÿฌ)
}


์˜ˆ์ œ) ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ œํ•œ(3)  

package exam06.package2;
import exam06.package1.A;
public class C {
	//ํ•„๋“œ
	//int a
	//์ฐธ์กฐ ํƒ€์ž…, ์ฐธ์กฐ ๋ณ€์ˆ˜
	//A์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์“ด๋‹ค. 
	A a1 = new A(true); //์ฐธ์กฐ ํƒ€์ž…
	//A a2 = new A(1); //default ์ƒ์„ฑ์ž ์ ‘๊ทผ ๋ถˆ๊ฐ€(์ปดํŒŒ์ผ ์—๋Ÿฌ)
	//A a3 = new A("๋ฌธ์ž์—ด"); //private ์ƒ์„ฑ์ž ์ ‘๊ทผ ๋ถˆ๊ฐ€(์ปดํŒŒ์ผ ์—๋Ÿฌ)
}

6.6.5 ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ ์ œํ•œ

์˜ˆ์ œ) ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ์ œํ•œ(1)
A ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋Š” ์ ‘๊ทผ ์ œํ•œ๊ณผ ์ƒ๊ด€์—†์ด ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

package exam06.package1;

public class A {
	//ํ•„๋“œ
	public int field1; //public ์ ‘๊ทผ ์ œํ•œ
	int field2; //default ์ ‘๊ทผ ์ œํ•œ
	private int field3; //private ์ ‘๊ทผ ์ œํ•œ
	
	//์ƒ์„ฑ์ž
	public A() {
		field1 = 1;
		field2 = 1;
		field3 = 1;
		
		method1();
		method2();
		method3();
	}
		
	//๋ฉ”์„œ๋“œ
	public void method1() {}
	void method2() {}
	private void method3() {}
}


์˜ˆ์ œ) ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ์ œํ•œ(2)
ํŒจํ‚ค์ง€๊ฐ€ ๋™์ผํ•œ B ํด๋ž˜์Šค์—์„œ๋Š” A ํด๋ž˜์Šค์˜ private ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

package exam06.package1;

public class B {
	public B{
		A a = new A();
		a.field1 = 1; //์ ‘๊ทผ์ œํ•œ์ž: public(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€O)
		a.field2 = 1; //์ ‘๊ทผ์ œํ•œ์ž: default(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€X)
		//a.field3 = 1; //์ ‘๊ทผ์ œํ•œ์ž: private(๊ฐ™์€ ํŒจํ‚ค์ง€X, ๋‹ค๋ฅธํŒจํ‚ค์ง€X)
		
		a.method1(); //์ ‘๊ทผ์ œํ•œ์ž: public(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€O)
		a.method2(); //์ ‘๊ทผ์ œํ•œ์ž: default(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€X)
		//a.method3(); //์ ‘๊ทผ์ œํ•œ์ž: private(๊ฐ™์€ ํŒจํ‚ค์ง€X, ๋‹ค๋ฅธํŒจํ‚ค์ง€X, ๊ฐ™์€ ํด๋ž˜์Šค๋‚ดO) ์ ‘๊ทผ ๋ถˆ๊ฐ€
	}
}


์˜ˆ์ œ) ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ์ œํ•œ(3)
ํŒจํ‚ค์ง€๊ฐ€ ๋‹ค๋ฅธ C ํด๋ž˜์Šค์—์„œ๋Š” A ํด๋ž˜์Šค์˜ public ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

package exam06.package2;
import exam06.package1.A;
public class C {
	public C() {
		A a = new A();
		a.field1 = 1; //์ ‘๊ทผ์ œํ•œ์ž: public(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€O)
		//a.field2 = 1; //์ ‘๊ทผ์ œํ•œ์ž: default(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€X) ์ ‘๊ทผ ๋ถˆ๊ฐ€
		//a.field3 = 1; //์ ‘๊ทผ์ œํ•œ์ž: private(๊ฐ™์€ ํŒจํ‚ค์ง€X, ๋‹ค๋ฅธํŒจํ‚ค์ง€X) ์ ‘๊ทผ ๋ถˆ๊ฐ€
		
		a.method1(); //์ ‘๊ทผ์ œํ•œ์ž: public(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€O)
		//a.method2(); //์ ‘๊ทผ์ œํ•œ์ž: default(๊ฐ™์€ ํŒจํ‚ค์ง€O, ๋‹ค๋ฅธํŒจํ‚ค์ง€X) ์ ‘๊ทผ ๋ถˆ๊ฐ€
		//a.method3(); //์ ‘๊ทผ์ œํ•œ์ž: private(๊ฐ™์€ ํŒจํ‚ค์ง€X, ๋‹ค๋ฅธํŒจํ‚ค์ง€X, ๊ฐ™์€ ํด๋ž˜์Šค๋‚ดO) ์ ‘๊ทผ ๋ถˆ๊ฐ€
	}
}

6.6.6 Getter์™€ Setter ๋ฉ”์„œ๋“œ p. 301 

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

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

ํ•„๋“œ๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰๊ณ  ๋ฉ”์„œ๋“œ๋Š” ๊ณต๊ฐœํ•ด์„œ ์™ธ๋ถ€์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ•„๋“œ์— ์ ‘๊ทผํ•˜๋„๋ก ์œ ๋„ํ•œ๋‹ค.
ํ•„๋“œ์˜ ๊ฐ’์„ ์™ธ๋ถ€๋กœ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ Getter๋ผ๊ณ  ํ•˜๊ณ 

์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ฐ›์•„ ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ Setter๋ผ๊ณ  ํ•œ๋‹ค. 

Setter: ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ฐ›์•„ ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. 
Getter: ํ•„๋“œ์˜ ๊ฐ’์„ ์™ธ๋ถ€๋กœ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋ฉ”์„œ๋“œ๋กœ ํ•„๋“œ๊ฐ’์„ ๊ฐ€๊ณตํ•œ ํ›„ ์™ธ๋ถ€๋กœ ์ „๋‹ฌํ•œ๋‹ค.

set: ์ €์žฅํ•œ๋‹ค.
get
: ์ €์žฅ๋œ ๊ฑฐ ๊ฐ€์ ธ์˜จ๋‹ค.

 
SET์€ ๋ณ€์ˆ˜๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋ชฉ์ ์˜ ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ž๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๊ณ 
GET์€ ๋ณ€์ˆ˜๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— return์ด ํ•„์š”ํ•˜๋‹ค.


ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ•„๋“œ๋ฅผ private์œผ๋กœ ์„ ์–ธํ•ด์„œ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ณ , ํ•„๋“œ์— ๋Œ€ํ•œ Setter์™€ Getter ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ํ•„๋“œ๊ฐ’์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝ/์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์ฐธ๊ณ : https://www.geeksforgeeks.org/getter-and-setter-in-java/


ํ•„๋“œ ํƒ€์ž…์ด boolean์ผ ๊ฒฝ์šฐ Getter๋Š” get ๋Œ€์‹  is๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค. 

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

//Getter //์ €์žฅ๋œ ๊ฑฐ ๊ฐ€์ ธ์˜จ๋‹ค.
public boolean isStop(){ //์ ‘๊ทผ ์ œํ•œ์ž: public, ๋ฆฌํ„ด ํƒ€์ž…: ํ•„๋“œ ํƒ€์ž…
	return stop;		//๋ฉ”์„œ๋“œ ์ด๋ฆ„: is+ํ•„๋“œํƒ€์ž…(์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž), ๋ฆฌํ„ด๊ฐ’: ํ•„๋“œ๊ฐ’
}

//Setter //์ €์žฅํ•œ๋‹ค.
public void setStop(boolean stop){
	this.stop = stop;
}

๋งŒ์•ฝ ์™ธ๋ถ€์—์„œ ํ•„๋“œ๊ฐ’์„ ์ฝ์„ ์ˆ˜๋งŒ ์žˆ๊ณ  ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋ ค๋ฉด(์ฝ๊ธฐ ์ „์šฉ) Getter ๋ฉ”์„œ๋“œ๋งŒ ์„ ์–ธํ•ด๋„ ์ข‹๊ณ ,
์•„๋‹ˆ๋ฉด Setter ๋ฉ”์„œ๋“œ๊ฐ€ private ์ ‘๊ทผ ์ œํ•œ์„ ๊ฐ–๋„๋ก ์„ ์–ธํ•ด๋„ ์ข‹๋‹ค. 


Car ํด๋ž˜์Šค์˜ speed์™€ stop ํ•„๋“œ์— ๋Œ€ํ•œ Getter์™€ Setter์„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค.

์˜ˆ์ œ 1) Getter์™€ Setter ๋ฉ”์„œ๋“œ ์„ ์–ธ

public class Car4 {
	//ํ•„๋“œ
	//์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰๊ณ 
	private int speed;
	private boolean stop;
	
	//์ƒ์„ฑ์ž
	
	//getter / setter ๋ฉ”์„œ๋“œ
	public int getSpeed() {
		return speed;
	}
	
	public void setSpeed(int speed) {
		//๋งŒ์•ฝ์— speed ๊ฐ’์ด ์Œ์ˆ˜์ด๋ฉด
		if (speed<0) {
			//์•„๋ฌด๊ฒƒ๋„ ์•ˆ ํ•˜๊ณ  setSpeed ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ
			return;
		}else {//speed๊ฐ’์ด ์–‘์ˆ˜์ด๋ฉด
			//speedํ•„๋“œ์— ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
			this.speed = speed;
		}
	}
	
	public boolean isStop() {
		return stop;//๊ธฐ๋ณธ๊ฐ’:false
	}
	public void setStop(boolean stop) {
		this.stop = stop;
		this.speed = 0;
	}		
}

์˜ˆ์ œ 2) Getter์™€ Setter ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
stop
ํ•„๋“œ์˜ Getter(isStop()) ๋ฆฌํ„ด๊ฐ’์ด false์ธ ๊ฒฝ์šฐ, true๋กœ ๋งŒ๋“ค๊ณ  (์›๋ž˜ ๋ฆฌํ„ด๊ฐ’์ด ๋„˜์–ด๊ฐˆ ๋•Œ)
์ž๋™์ฐจ๋ฅผ ๋ฉˆ์ถ”๊ธฐ ์œ„ํ•ด Setter(setStop(true))๋ฅผ ํ˜ธ์ถœํ•ด์„œ stop ํ•„๋“œ๋ฅผ true๋กœ, speed ํ•„๋“œ๋ฅผ 0์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
(์ค‘์š”ํ•œ ๊ฒƒ์€ get, set์ด๋‹ค.)

public class Car5Example {
	public static void main(String[] args) {
		Car5 myCar = new Car5();
		
		//์ž˜๋ชป๋œ ์†๋„ ๋ณ€๊ฒฝ
		myCar.setSpeed(-50);
		
		System.out.println("ํ˜„์žฌ ์†๋„: "+myCar.getSpeed());
		
		//์˜ฌ๋ฐ”๋ฅธ ์†๋„ ๋ณ€๊ฒฝ
		myCar.setSpeed(60);
		
		//System.out.println("myCar.isStop(): "+myCar.isStop()); //false
		//System.out.println("!myCar.isStop(): "+!myCar.isStop()); //true
		//๋ฉˆ์ถค
        // ๋ฉˆ์ถ”๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
		// => ์ฐจ๋Ÿ‰์ด ์›€์ง์ผ ๊ฒฝ์šฐ์—๋งŒ ํ˜ธ์ถœ
		//์ฐจ๋Ÿ‰์ด ์›€์ง์ด๋Š”์ง€ ํ™•์ธ(isStop๊ฐ’์ด false ์ผ ๊ฒฝ์šฐ) ๋ฆฌํ„ด์˜ ๊ธฐ๋ณธ๊ฐ’์ด false๋กœ ๋„˜์–ด๊ฐ€๋ฉด
		if(!myCar.isStop()) {
			myCar.setStop(true);
		}
/*			if(myCar.isStop()) {
				myCar.setStop(false);
			}else {
				myCar.setStop(true);
			}*/
		
		//System.out.println("myCar.isStop(): "+myCar.isStop()); //true
		//System.out.println("!myCar.isStop(): "+!myCar.isStop()); //false
		
		System.out.println("ํ˜„์žฌ ์†๋„: "+myCar.getSpeed());
	}
}

 

์ฐธ๊ณ : https://velog.io/@luvaa/%EC%A0%91%EA%B7%BC%EC%A0%9C%ED%95%9C%EC%9E%90


๋งˆ๋ฌด๋ฆฌ p. 306
4๊ฐ€์ง€ ํ‚ค์›Œ๋“œ๋กœ ๋๋‚ด๋Š” ํ•ต์‹ฌ ํฌ์ธํŠธ

1) ํŒจํ‚ค์ง€ ์„ ์–ธ: ํ•ด๋‹น ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์–ด๋–ค ํŒจํ‚ค์ง€์— ์†ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์†Œ์Šค ํŒŒ์ผ์˜ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.

package ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€;

2) import๋ฌธ: ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†Œ์†๋˜์–ด ์žˆ๋‹ค๋ฉด, import๋ฌธ์œผ๋กœ ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ๊ฒƒ์ž„์„ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค.

import ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค์ด๋ฆ„;
import ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.*;

3) ์ ‘๊ทผ์ œํ•œ์ž: ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์•„์•ผ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
์ด๋•Œ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

[์ ‘๊ทผ ์ œํ•œ์˜ ์ข…๋ฅ˜์™€ ์ ์šฉํ•  ๋Œ€์ƒ]

์ ‘๊ทผ ์ œํ•œ ์ ์šฉ ๋Œ€์ƒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค
1) public ํด๋ž˜์Šค, ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ์—†์Œ
2) protected ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†Œ์†๋œ ํด๋ž˜์Šค
3) default ํด๋ž˜์Šค, ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†Œ์†๋œ ํด๋ž˜์Šค
4) private ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ๋ชจ๋“  ์™ธ๋ถ€ ํด๋ž˜์Šค
์ ‘๊ทผ ์ œํ•œ์ž
public: ์ ‘๊ทผ ์ œํ•œ์ด ์—†๋‹ค.
protected: ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅ, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
* ์ƒ์†์„ ํ•˜๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅ * 
(default): ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅ, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
* ์ƒ์†์„ ํ•ด๋„ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ *
private: ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅ(๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ)
์ ‘๊ทผ ์ œ์–ด์ž ๊ฐ™์€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๊ฐ™์€ ํŒจํ‚ค์ง€์˜ ๋ฉค๋ฒ„ ์ž์‹ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๊ทธ ์™ธ์˜ ์˜์—ญ
public โ—‹ โ—‹ โ—‹ โ—‹
protected โ—‹ โ—‹ โ—‹ X
default โ—‹ โ—‹ X X
private โ—‹ X X X


4) Getter/Setter: ํ•„๋“œ๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰๊ณ  ๋ฉ”์„œ๋“œ๋Š” ๊ณต๊ฐœํ•ด์„œ ์™ธ๋ถ€์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ•„๋“œ์— ์ ‘๊ทผํ•˜๋„๋ก ์œ ๋„ํ•œ๋‹ค. ํ•„๋“œ์˜ ๊ฐ’์„ ์™ธ๋ถ€๋กœ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ Getter๋ผ๊ณ  ํ•˜๊ณ 
์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ฐ›์•„ ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ Setter๋ผ๊ณ  ํ•œ๋‹ค. 


728x90
๋ฐ˜์‘ํ˜•
Comments