๋ฐ์ํ
๐ ์ ํ์ ์๊ณ ๋์ด๊ฐ๊ธฐ ๐
์ ํ์(Modifier)๋?
๊ธฐ๋ฅ์ ์ ํํ๊ธฐ ์ํ ํค์๋
1. ์ ๊ทผ์ ํ์(Access Modifier)
private
package
protected
public
2. ์ผ๋ฐ์ ํ์ (General Modifier)
static : ๊ฐ์ฒด๊ฐ ์๋ ํด๋์ค๋ก ์ ๊ทผํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ ์ ํ์
final :
abstract :
1. static๋ฉค๋ฒ
1) ๊ฐ๋
- ๊ฐ์ฒด๊ฐ ์๋ ํด๋์ค๋ก ์ ๊ทผํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ ์ ํ์
- static ํค์๋๊ฐ ๋ถ์ด์์ผ๋ฉด ์ผ์ข ์ ๊ณต์ ์ ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ์
- ํด๋์ค๋ก ์ ๊ทผ ๊ฐ๋ฅ
- ํด๋์ค๋ก๋๊ฐ ํด๋์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ ๋ static๋ฉค๋ฒ๋ถํฐ ์ด๊ธฐํ์ํด (= ์๋ ์ด๊ธฐํ)
- ๋ฉ๋ชจ๋ฆฌ์ ๋ฑ ํ๋๋ง ๋ง๋ค์ด์ค
2) staticํ๋(์ ์ ํ๋)
- ํด๋์ค ์์ฑ ์ ๋ฉ๋ชจ๋ฆฌ(Static์์ญ)์ ๋ง๋ค์ด์ง๋ ํ๋
- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
ํน์ง
- ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ธฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋๋ง ์์ฑ๋จ
- ์์ฑ์์์ ์ด๊ธฐํ ์ฒ๋ฆฌํ์ง ์๊ณ ์ง์ ์ด๊ธฐํ๋ฅผ ์ค์ ํจ
- ๋ชจ๋ ๊ฐ์ฒด์์ ์ ์ ํ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ณต์ ๊ฐ์ - ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ๋ฐ ํ๋๊ฐ ๋ณ๊ฒฝ ์ฉ์ด
- ํด๋์ค ์ธ๋ถ์์๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ ๊ทผ
ํด๋์ค๋ช
.ํ๋
- ์ฆ , ๊ณต์ ๊ฐ๋ค์ staticํ๋์ ์ ์ฅํ์ฌ ์ฌ์ฉํ์!!
- ๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ ์ ์ด๊ธฐ๊ฐ ์ค์ ์๋ต๊ธฐ๋ฅ
//private static int total = 0; //๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ ์ ์ด๊ธฐ๊ฐ ์ค์ ์๋ต๊ธฐ๋ฅ
private static int total;
- ์ ์ ํ๋๋ฅผ ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉ ์ ํด๋์ค๋ช .ํ๋๋ช ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
- ๋ง์ฝ ์ ์ ํ๋์ ์ ๊ทผ์ง์ ์๊ฐ private์ธ ๊ฒฝ์ฐ ๋ค๋ฅธ ํด๋์ค์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
//์๋ก ๋ค๋ฅธ ํด๋์ค์์ ์๋์ ๊ฐ์ด ์ ์ธ๋์๋ค๋ฉด
//class A
private static int total;
//class B
for(Student student:students) {
student.display();
Student.total += student.getTot(); //error, Student.total ์ฌ์ฉ๋ถ๊ฐ๋ฅ
}
3) static๋ฉ์๋ (์ ์ ๋ฉ์๋)
- this ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ฉ์๋
- ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋ค (๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค๊ฐ ์๋!)
ํน์ง
- ์ฆ, this๋งค๊ฐ๋ณ์๊ฐ ์์ผ๋ฏ๋ก ๊ฐ์ฒด(์ธ์คํด์ค) ํ๋์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
- ์ ์ ํ๋๋ง ์ ๊ทผํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ฉ์๋ ํธ์ถ์ด ์ฉ์ดํจ
- ์ฆ, ๊ฐ์ฒด ์์ฑ ์ ์ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํธ์ถ ๊ฐ๋ฅ
- ์ผ๋ฐ์ ์ผ๋ก ์ ์ ํ๋๋ฅผ ์ฌ์ฉํ ๋๋ง ์ ์ ๋ฉ์๋ ๋ง๋ค๊ณ ์ฌ๋งํด์๋ ์ ๋ง๋ค์ง ์์
ex. ๊ฐ๋จํ ๊ธฐ๋ฅ์ ์ ๊ณตํ ๋ static๋ฉ์๋ ์ด์ฉํจ - ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ง ํด๋์ค๋ก ํ๋ก๊ทธ๋จ ๋ง๋๋ ๊ฒ์ ์๋๋.. ์์ฃผ์ฌ์ฉํ์ง๋ ์์!
- jre ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํด์ฃผ๋ ๋ํ์ ์ธ ์ ์ ๋ฉ์๋
- Math ํด๋์ค : ๊ฐ ์ ์ฅ์ด ์๋ ์ํ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ๋ง ์ ๊ณตํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ ์ ๋ฉ์๋๋ก ์ ๊ณต๋จ
- ์ค์ ๋ก ์ผ๋ฐ์ ์ธ ํด๋์ค๋ค์ ๊ฐ์ฒดํ ํ ์ ์๋๋ก ์ธ์คํด์ค๋ฉ์๋๋ฅผ ๋ ๋ง์ด ์ด์ฉํจ
//ํ๋
private int num;
private String name;
private int kor, eng, tot;
private static int total;
//์ ์ ๋ฉ์๋
public static int getTotal() {
//kor = 50; //error, ์ธ์คํด์ค ํ๋ ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
return total;
}
public static void setTotal(int total) {
Student.total = total; //ํด๋์ค๋ช
.ํ๋๋ก ์ ๊ทผํด ์ ์ ํ๋ ์ฌ์ฉ ๊ฐ๋ฅ
}
public static void setTotal(int total) {
//this.total = total; //error ,๊ฐ์ฒด ์ฐธ์กฐ ๋ชปํ๋ฏ๋ก this๋งค๊ฐ๋ณ์ ์์
}
- ์ ์ ๋ฉ์๋๋ ํด๋์ค๋ช .๋ฉ์๋๋ช (๊ฐ, ๊ฐ, ...);๋ก ํธ์ถ ๊ฐ๋ฅ
- ๊ฐ์ฒด.๋ฉ์๋๋ช (๊ฐ, ๊ฐ, ...);๋ก ์ ๊ทผํด๋ ์๋ฌ๋ ๋์ง ์์ง๋ง ์ฃผ์!
- ์ฌ๋งํ๋ฉด ํด๋์ค๋ก ์ ๊ทผํ๊ธฐ!
for(Student student:students) {
student.display();
Student.setTotal(Student.getTotal() + student.getTot());
//Student.setTotal(student.getTotal() + student.getTot()); //์ฃผ์
}
2. non-static๋ฉค๋ฒ
1) ์ธ์คํด์ค ํ๋(Instance Field)
- ๊ฐ์ฒด ์์ฑํ ๋ ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ(Heap์์ญ)์ ๋ง๋ค์ด์ง๋ ํ๋
private int num;
private String name;
private int kor, eng, tot;
2) ์ธ์คํด์ค ๋ฉ์๋(Instance Method)
- this ๋งค๊ฐ๋ณ์๊ฐ ์กด์ฌํ๋ ๋ฉ์๋์ธ์คํด์ค ํ๋ ๋ฐ ์ ์ ํ๋์ ์ ๊ทผ ๊ฐ๋ฅ
private static int total;
public int getNum() {
//total += kor; // ์ ์ ํ๋์ ์ธ์คํด์คํ๋ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅ ok
//Student.total += kor; // ok
//this.total += kor; // ok ์ด 3๊ฐ๋ ๋ค ๊ฐ์ ๋ง์
return num;
}
public void setNum(int num) {this.num = num;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getKor() {return kor;}
public void setKor(int kor) {this.kor = kor;calcTot();}
public int getEng() {return eng;}
public void setEng(int eng) {this.eng = eng;calcTot();}
public int getTot() {return tot;}
public void setTot(int tot) {this.tot = tot;}
๋ฐ์ํ
'java > oop' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[oop] 12. ์ฑ๊ธํค(Singleton) ํด๋์ค (1) | 2024.04.19 |
---|---|
[oop] 11. ํ์์ ๋ณด๋ฅผ ์ ์ฅ ํ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ(StudentApp) (1) | 2024.04.18 |
[oop] 9. ์๋ฐ์ API ๋ฌธ์ ๋ณด๋ ๋ฒ (0) | 2024.04.17 |
[oop] 8. ์๋ฐ๋ ํ๋กํ ํ์ ํด๋์ค์ด๋ค. (MemberApp) with JVM์ค๋ช (0) | 2024.04.17 |
[oop] 7. VO(Value Object)ํด๋์ค (0) | 2024.04.16 |