๐ ์๋ฐ์ ์ ์์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
์ ์ด์Modifier
Non-Access-Modifiers
์ ๊ทผ ์ ์ด์๊ฐ ์๋ ์ ์ด์๋ค๋ก๋
static, final, abstract, synchronized......๋ฑ์ด ์๋ค.
๋ช ๊ฐ์ง๋ง ์๊ฐํ๋ค.
static
๋ฉค๋ฒ๋ณ์, ๋ฉ์๋, ์ด๊ธฐํ ๋ธ๋ญ ์์ ๋ถ๋๋ค.
static์ด ๋ณ์์ ๋ถ์ผ๋ฉด ๋ชจ๋ ์ธ์คํด์ค์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ํด๋์ค ๋ณ์๊ฐ ๋๋ค.
๋ฉ์๋์ ๋ถ์ผ๋ฉด ์ธ์คํด์ค ์์ฑ์์ด ํธ์ถํ ์ ์๋ static ๋ฉ์๋๊ฐ ๋๋ค.
final
ํด๋์ค, ๋ฉ์๋, ๋ฉค๋ฒ๋ณ์, ์ง์ญ๋ณ์์ ๋ถ๋๋ค.
final์ด ๋ถ์ผ๋ฉด ์์ ํ ์ ์๋ ๋ฉ์๋, ๋ณ์, ํด๋์ค๊ฐ ๋๋ค.
์ฆ,
final๋ณ์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ์์.
final method๋ ์ค๋ฒ๋ผ์ด๋ฉ ๋ถ๊ฐ.
final class๋ extends ๋ถ๊ฐ.
final ๋ณ์๋ผ๋
์์ฑ์๋ฅผ ์ด์ฉํ ์ด๊ธฐํ๋ฅผ ํตํด ๊ฐ ์ธ์คํด์ค๋ง๋ค ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๊ฒ ํ ์ ์๋ค.
abstract
ํด๋์ค, ๋ฉ์๋ ์์ ๋ถ๋๋ค.
ํด๋์ค์ ๋ถ์ผ๋ฉด, ์ถ์ ๋ฉ์๋๊ฐ ์ ์ธ๋์ด ์๋ค๋ ๊ฒ์ ๋ปํ๋ค.
๋ฉ์๋์ ๋ถ์ผ๋ฉด ์ ์ธ๋ถ๋ง ์๊ณ ๊ตฌํ๋ถ๊ฐ ์๋ ์ถ์ ๋ฉ์๋๋ผ๋ ๊ฒ์ ๋ปํ๋ค.
์ ๊ทผ ์ ์ด์Access-Modifiers
์๋ฐ์๋ public, protected, default, private ์ด๋ ๊ฒ 4๊ฐ์ ์ ๊ทผ ์ ์ด์๊ฐ ์๋ค.
์ด๋ฏธ์ง ์ถ์ฒ : https://www.softwaretestingmaterial.com/access-modifiers-in-java/
- public - ์ ๊ทผ ์ ํ ์์
- protected ๊ฐ์ ํจํค์ง ๋ด, ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํจํค์ง์ ์์(sub)ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- default ๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- private ๊ฐ์ ํด๋์ค ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
์ด๋ฏธ์ง ์ถ์ฒ : https://www.softwaretestingmaterial.com/access-modifiers-in-java/
์บก์ํ
์ ๊ท์ฐฎ๊ฒ ์ ๊ทผ์ ์ ์ดํ ๊น? ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด์๋ค. ํด๋์ค ์ธ๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ํจ๋ถ๋ก ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ๋ณดํธํ ํ์๊ฐ ์๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ ๊ฐ์ถ๊ธฐData Hiding์ด๋ผ๊ณ ํ๋ค. Data Hiding์ ๊ฐ์ฒด์งํฅ๊ฐ๋
์์ ์บก์ํEncapsulation์ ํด๋นํ๋ ๋ด์ฉ์ด๋ค.
๋ด๋ถ์์๋ง ์ด์ฉํ๊ณ , ์ธ๋ถ์๋ ๋ถํ์ํ ๋ถ๋ถ์ ๊ฐ์ถ๊ธฐ ์ํด ๋ฉค๋ฒ๋ฅผ private์ผ๋ก ์ง์ ํ๋๋ฐ, ์ด๊ฒ ์ญ์ ์บก์ํ์ ํด๋นํ๋ค.
๋ง์ฝ Time์ด๋ผ๋ ํด๋์ค๋ฅผ ์ด๋ ๊ฒ ์ ์ํ๋ค๊ณ ํ์.
class Time {
int hour;
int minute;
int second;
}
์ด๋ฌ๋ฉด ๋๊ฐ ์ธ์ ์ด๋์๋ ๊ฐ์ ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ์ ์ํํ๊ณ , ๋ ์๊ฐ์ผ๋ก ๋ค์ด์์ผ ํ๋ ๊ฐ์ 25์ด๋ 33 ๊ฐ์ ์ ํจํ์ง ์์ ๊ฐ์ ๋ฃ์์ง๋ ๋ชจ๋ฅธ๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ด๋ ๊ฒ ์ด๋ค.
public class Time {
private int hour, minute, second;
Time(int hour, int minute, int second) {
setHour(hour);
setMinute(minute);
setSecond(second);
}
/* SETTER */
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
/*GETTER*/
public void setHour(int hour) {
if(hour < 0 || hour > 23) return; //์ ํจ์ฑ ๊ฒ์ฌ
this.hour = hour;
}
public void setMinute(int minute) {
if(minute < 0 || minute > 59) return;
this.minute = minute;
}
public void setSecond(int second) {
if(second < 0 || second > 59) return;
this.second = second;
}
@Override
public String toString() {
return "Time{" +
"hour=" + hour +
", minute=" + minute +
", second=" + second +
'}';
}
}
public class TimeMain {
public static void main(String[] args) {
Time time = new Time(13, 47, 22);
//time.hour = 22; ์ด์ ์ด๋ฐ์์ผ๋ก ์์ ํ์ง ์๋๋ค.
time.setHour(time.getHour()+1);
System.out.println(time);
}
}
์ด๋ฐ ์์ผ๋ก ํ๋ฉด Timeํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ง์ ์์ ํ ์ ์๋ค. setter๋ฅผ ๊ฑฐ์ณ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํตํด ์ ํจํ์ง ์์ ๊ฐ์ returnํ ์ ์๋ค.
์์ฑ์์ ์ ๊ทผ ์ ์ด์
์ผ๋ฐ์ ์ผ๋ก ์์ฑ์์ ์ ๊ทผ ์ ์ด์๋ ํด๋์ค์ ์ ๊ทผ ์ ์ด์์ ์ผ์นํ์ง๋ง ๋ค๋ฅด๊ฒ ์ง์ ํ ์ ์๋ค.
private์ผ๋ก ์ง์ ํ๋ฉด ์ธ๋ถ์์ ์์ฑ์์ ์ ๊ทผํ ์ ์๋ค. ํด๋น ํด๋์ค ๋ด์ ์ธ์คํด์ค๋ฅผ returnํ๋ static๋ฉ์๋๋ฅผ ์ ์ธํด๋๋ฉด, private์์ฑ์์ฌ๋ ์ธ๋ถ์์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
์ฃผ์ํ ์ ์ private ์์ฑ์๋ฅผ ๊ฐ์ง ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์กฐ์์ด ๋ ์ ์๋ค. ๋ฐ๋ผ์ class ์์ fianl์ ๋ช ์์ ์ผ๋ก ๋ถ์ด๋ ๊ฒ์ด ์ข๋ค.
์์ ๋ง์ด ์ข ์ด๋ ค์ ๋๋ฐ ์ฝ๋๋ก ๋ณด๋ฉด ์ฝ๋ค.
final class Singleton {
private Singleton() {}
public static Singleton getInstance() {
return new Singleton();
}
}
public class SingletonTest {
public static void main(String[] args) {
//Singleton singleton = new Singleton(); //ERROR
Singleton singleton = Singleton.getInstance();
}
}
- ์ฐธ๊ณ ์๋ฃ : ์๋ฐ์ ์ ์
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋คํ์ฑPolymorphism (0) | 2020.09.06 |
---|---|
์์Inheritance (0) | 2020.09.06 |
๊ฐ์ฒด์งํฅ2 (0) | 2020.09.06 |
๊ฐ์ฒด์งํฅ1 (0) | 2020.09.06 |
Java๋? (0) | 2020.09.06 |