์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[33] 230214 Java Ch. 6 ํด๋์ค: 6. ํจํค์ง์ ์ ๊ทผ ์ ํ์, *Getter/Setter [K-๋์งํธ ํธ๋ ์ด๋ 33์ผ] ๋ณธ๋ฌธ
[33] 230214 Java Ch. 6 ํด๋์ค: 6. ํจํค์ง์ ์ ๊ทผ ์ ํ์, *Getter/Setter [K-๋์งํธ ํธ๋ ์ด๋ 33์ผ]
yjyuwisely 2023. 2. 14. 12:47230214 Tue 33rd class
Ch. 6 ํด๋์ค
์ง๋: p. 286 ~ (๊ต์ฌ: ํผ์ ๊ณต๋ถํ๋ ์๋ฐ, ์ ์: ์ ์ฉ๊ถ)
ํ๋น๋ฏธ๋์ด_ํผ๊ณต์_์ฉ์ด์ง.pdf
์ฉ์ด ์ฐธ๊ณ
์๋ฐ ์ ๊ทผ ์ ํ์์ ์ข ๋ฅ์ ์ฐจ์ด(public, protected, private)
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
์ง๋ ์์ ๋ ๋ฐฐ์ด ๊ฒ ์ค ๋ค์ ๊ธฐ์ตํ ๊ฒ
์ธ์คํด์ค: ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด
์ธ์คํด์ค(instance) ๋ฉค๋ฒ: ์ธ์คํด์ค ๋ฉค๋ฒ๋ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์์ฑํ ํ ์ฌ์ฉํ ์ ์๋ ํ๋์ ๋ฉ์๋๋ฅผ ๋งํ๋๋ฐ, ์ด๋ค์ ๊ฐ๊ฐ ์ธ์คํด์ค ํ๋, ์ธ์คํด์ค ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ธ์คํด์ค ํ๋์ ๋ฉ์๋๋ ๊ฐ์ฒด์ ์์๋ ๋ฉค๋ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์์ด๋ ์ฌ์ฉํ ์ ์๋ค.
๋
ผ๋ฆฌ ๋ถ์ ์ฐ์ฐ์(!) 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 ์ ๊ทผ ์ ํ์: ๋จ์ด ๋ป ๊ทธ๋๋ก ์ธ๋ถ ํด๋์ค๊ฐ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
๋ชจ๋ ํจํค์ง์์ ์ ํ ์์ด ์์ฑ์ ํธ์ถ ๊ฐ๋ฅํ๋ค.
2) protected ์ ๊ทผ ์ ํ์: ๊ฐ์ ํจํค์ง ๋๋ ์์ ํด๋์ค์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
๊ฐ์ ํจํค์ง์ ์ํ๋ ํด๋์ค์์ ์์ฑ์ ํธ์ถ ๊ฐ๋ฅํ๋ค. ๋ค๋ฅธ ํจํค์ง์ ์ํ ํด๋์ค๊ฐ ํด๋น ์์ ํด๋์ค๋ผ๋ฉด ์์ฑ์๋ฅผ ํธ์ถํ ์ ์๋ค.
์์ O
3) default ์ ๊ทผ ์ ํ์: ๊ฐ์ ํจํค์ง์ ์์๋ ํด๋์ค์์๋ง ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
์์ฑ์๋ฅผ ์ ์ธํ ๋ ์ ํ์๋ฅผ ์๋ฌด๊ฒ๋ ์ ์ง ์์ผ๋ฉด default ์ ๊ทผ ์ ํ์ ๊ฐ์ง๋ค.
๊ฐ์ ํจํค์ง ๋ด์์ ์๋ฌด๋ฐ ์ ํ ์์ด ์์ฑ์ ํธ์ถ ๊ฐ๋ฅํ๋ค.
์์ X
4) private ์ ๊ทผ ์ ํ์: ๋จ์ด ๋ป๋๋ก ๊ฐ์ธ์ ์ธ ๊ฒ์ด๋ผ ์ธ๋ถ์์ ์ฌ์ฉ๋ ์ ์๋๋ก ํ๋ค.
์ค๋ก์ง ํด๋์ค ๋ด๋ถ์์๋ง ์์ฑ์ ํธ์ถ ๊ฐ๋ฅํ๋ค. ๊ฐ์ฒด ์์ฑ ๊ฐ๋ฅํ๋ค.
๊ฐ์ ํจํค์ง์ฌ๋ ์ ๊ทผ์ด ์ ๋๋ค.
๊ทธ๋ฆผ ์ฐธ๊ณ : http://www.tcpschool.com/java/java_modifier_accessModifier
6.6.3 ํด๋์ค์ ์ ๊ทผ ์ ํ p. 294
ํด๋์ค ์์๋ public, default๋ง ์ฌ ์ ์๋ค.
1) default ์ ๊ทผ ์ ํ
ํด๋์ค๋ฅผ ์ ์ธํ ๋ public์ ์๋ตํ๋ค๋ฉด ํด๋์ค๋ default ์ ๊ทผ ์ ํ์ ๊ฐ์ง๋ค.
๊ฐ์ ํจํค์ง์์๋ ์๋ฌด๋ฐ ์ ํ ์์ด ์ฌ์ฉํ ์ ์์ง๋ง ๋ค๋ฅธ ํจํค์ง์์๋ ์ฌ์ฉํ ์ ์๋๋ก ์ ํ๋๋ค.
default ์ ๊ทผ ์ ํ์: ๊ฐ์ ํจํค์ง์ ์์๋ ํด๋์ค์์๋ง ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
์์ฑ์๋ฅผ ์ ์ธํ ๋ ์ ํ์๋ฅผ ์๋ฌด๊ฒ๋ ์ ์ง ์์ผ๋ฉด default ์ ๊ทผ ์ ํ์ ๊ฐ์ง๋ค.
๊ฐ์ ํจํค์ง ๋ด์์ ์๋ฌด๋ฐ ์ ํ ์์ด ์์ฑ์ ํธ์ถ ๊ฐ๋ฅํ๋ค.
2) 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๋ผ๊ณ ํ๋ค.