์ ๊ทผ ์ง์ ์
- private, protected, public, ๋ํดํธ(์ ๊ทผ ์ง์ ์ ์๋ต)
- ๋ชฉ์
- ํด๋์ค๋ ์ผ๋ถ ๋ฉค๋ฒ๋ฅผ ๊ณต๊ฐํ์ฌ ๋ค๋ฅธ ํด๋์ค์์ ์ ๊ทผํ๋๋ก ํ์ฉ
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ์บก์ํ ์ ์ฑ
์ ๋ฉค๋ฒ๋ฅผ ๋ณดํธํ๋ ๊ฒ
ํด๋์ค ์ ๊ทผ ์ง์
- ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉํ๋๋ก ํ์ฉํ ์ง ์ง์
- public ํด๋์ค -> ๋ค๋ฅธ ๋ชจ๋ ํด๋์ค์๊ฒ ์ ๊ทผ ํ์ฉ
- ๋ํดํธ ํด๋์ค -> ์ ๊ทผ ์ง์ ์ ์๋ต, package-private๋ผ๊ณ ๋ ํจ, ๊ฐ์ ํจํค์ง์ ํด๋์ค์๋ง ์ ๊ทผ ํ์ฉ
๋งด๋ฒ ์ ๊ทผ ์ง์
- public
- ํจํค์ง์ ๊ด๊ณ ์์ด ๋ชจ๋ ํด๋์ค์์ธ ์ ๊ทผ ํ์ฉ
- private
- ๋์ผ ํด๋์ค ๋ด์๋ง ์ ๊ทผ ํ์ฉ
- ์์๋ฐ์ ์๋ธ ํด๋์ค์์ ์ ๊ทผ ๋ถ๊ฐ
- protected
- ๊ฐ์ ํจํค์ง ๋ด์ ๋ค๋ฅธ ๋ชจ๋ ํด๋์ค์์ธ ์ ๊ทผ ํ์ฉ
- ์์ ๋ฐ์ ์๋ธ ํด๋์ค๋ ๋ค๋ฅธ ํจํค์ง์ ์์ด๋ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ํดํธ(default)
- ๊ฐ์ ํจํค์ง ๋ด ๋ค๋ฅธ ํด๋์ค์๊ฒ ์ ๊ทผ ํ์ฉ
์๋ ์ฝ๋์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋๋ ์ด์ ?
class Sample {
public int a;
private int b;
int c;
}
public class AccessEx{
public static void main(String[] args) {
Sample aClass = new Sample();
aClass.a = 10;
aClass.b = 10; // ์ปดํ์ผ ์ค๋ฅ
aClass.c = 10;
}
}
-> Sample ํด๋์ค์ a์ c๋ ๊ฐ๊ฐ public, default ์ ๊ทผ ์ง์ ์๋ก ์ ์ธ์ด ๋์ด ๊ฐ์ ํจํค์ง์ ์ํ AccesEx ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ
-> Sample ํด๋์ค์ b๋ private์ผ๋ก ์ ์ธ์ด ๋์ด AccessEx ํด๋์ค์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
static ๋ฉค๋ฒ
- static ๋ฉค๋ฒ ์ ์ธ
class StaticSample {
int n; // non-static ํ๋
void g() {...} // not-static ๋ฉ์๋
static int m; // static ํ๋
static void f() {...} // static ๋ฉ์๋
}
- ๊ฐ์ฒด ์์ฑ๊ณผ non-static ๋ฉค๋ฒ์ ์์ฑ
- non-static ๋ฉค๋ฒ๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋, ๊ฐ์ฒด๋ง๋ค ์๊ธด๋ค.
- static ๋ฉค๋ฒ๋ ํด๋์ค๋น ํ๋๋ง ์์ฑ๋๊ณ , ๊ฐ์ฒด๋ค์ ์ํด ๊ณต์ ๋๋ค.
- static ๋ฉค๋ฒ์ non-static ๋ฉค๋ฒ ํน์ฑ
non-static ๋ฉค๋ฒ static ๋ฉค๋ฒ ์ ์ธ class Sample {
int n;
void g() {...}
}class Sample {
static int m;
static void g() {...}
}๊ณต๊ฐ์ ํน์ฑ ๋ฉค๋ฒ๋ ๊ฐ์ฒด๋ง๋ค ๋ณ๋ ์กด์ฌ
- ์ธ์คํด์ค ๋ฉค๋ฒ๋ผ๊ณ ๋ถ๋ฆ๋ฉค๋ฒ๋ ํด๋์ค ๋น ํ๋ ์์ฑ
- ๋ฉค๋ฒ๋ ๊ฐ์ฒด ๋ด๋ถ ์๋ ๋ณ๋์ ๊ณต๊ฐ์ ์์ฑ
- ํด๋์ค ๋ฉค๋ฒ๋ผ๊ณ ๋ถ๋ฆ์๊ฐ์ ํน์ฑ ๊ฐ์ฒด ์์ฑ ์์ ๋ฉค๋ฒ ์์ฑ
- ๊ฐ์ฒด๊ฐ ์๊ธธ ๋ ๋ฉค๋ฒ๋ ์์ฑ
- ๊ฐ์ฒด ์์ฑ ํ ๋ฉค๋ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ฐ์ฒด ์ฌ๋ผ์ง๋ฉด ๋ฉค๋ฒ๋ ์ฌ๋ผ์งํด๋์ค ๋ก๋ฉ ์์ ๋ฉค๋ฒ ์์ฑ
- ๊ฐ์ฒด ์๊ธฐ๊ธฐ ์ ์ ์ด๋ฏธ ์์ฑ
- ๊ฐ์ฒด ์๊ธฐ๊ธฐ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ ธ๋ ๋ฉค๋ฒ๋ ์ฌ๋ผ์ง์ง ์์
- ๋ฉค๋ฒ๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ ์ฌ๋ผ์ง๊ณต์ ์ ํน์ฑ ๊ณต์ ๋์ง ์์
- ๋ฉค๋ฒ๋ ๊ฐ์ฒด ๋ด์ ๊ฐ๊ฐ ๊ณต๊ฐ ์ ์ง๋์ผํ ํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ์ํด ๊ณต์ - static ๋ฉค๋ฒ ์ฌ์ฉ
- ํด๋์ค ์ด๋ฆ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
StaticSample.m = 3; // ํด๋์ค ์ด๋ฆ์ผ๋ก static ํ๋ ์ ๊ทผ StaticSample.f(); // ํด๋์ค ์ด๋ฆ์ผ๋ก static ๋ฉ์๋ ํธ์ถโ
- ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ก ์ ๊ทผ ๊ฐ๋ฅ
StaticSample b1 = new StaticSample(); b1.m = 3; // ๊ฐ์ฒด ์ด๋ฆ์ผ๋ก static ํ๋ ์ ๊ทผ b1.f(); // ๊ฐ์ฒด ์ด๋ฆ์ผ๋ก static ๋ฉ์๋ ํธ์ถโ
- non-static ๋ฉค๋ฒ๋ ํด๋์ค ์ด๋ฆ์ผ๋ก ์ ๊ทผ ๋ถ๊ฐ๋ฅ
- static์ ํ์ฉ
- ์ ์ญ ๋ณ์์ ์ ์ญ ํจ์๋ฅผ ๋ง๋ค ๋
- ๊ณต์ ๋ฉค๋ฒ๋ฅผ ๋ง๋ค๊ณ ์ ํ ๋
- static ๋ฉ์๋์ ์ ์ฝ ์กฐ๊ฑด
- static ๋ฉ์๋๋ ์ค์ง static ๋ฉค๋ฒ๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ๊ฐ์ฒด๊ฐ ์์ฑ๋์ง ์์ ์ํฉ์์๋ static ๋ฉ์๋๋ ์คํ๋ ์ ์๊ธฐ ๋๋ฌธ์, non-static ๋ฉค๋ฒ ํ์ฉ ๋ถ๊ฐ
- non-static ๋ฉ์๋๋ static ๋ฉค๋ฒ ์ฌ์ฉ ๊ฐ๋ฅ
class StaticMethod { int n; void f1(int x) {n = x;} // ์ ์ void f2(int x) {m = x;} // ์ ์ static int m; static void s1(int x) {n = x;} // ์ปดํ์ผ ์ค๋ฅ, static ๋ฉ์๋๋ non-static ํ๋ n ์ฌ์ฉ ๋ถ๊ฐ static void s2(int x) {f1(3);} // ์ปดํ์ผ ์ค๋ฅ, static ๋ฉ์๋๋ non-static ๋ฉ์๋ f1() ์ฌ์ฉ ๋ถ๊ฐ static void s3(int x) {m = x;} // ์ ์, static ๋ฉ์๋๋ static ํ๋ m ์ฌ์ฉ ๊ฐ๋ฅ static void s4(int x) {s3(3);} // ์ ์, static ๋ฉ์๋๋ static ๋ฉ์๋ s3() ํธ์ถ ๊ฐ๋ฅ }โ
- static ๋ฉ์๋๋ this ์ฌ์ฉ ๋ถ๊ฐ -> static ๋ฉ์๋๋ ๊ฐ์ฒด ์์ด๋ ์ฌ์ฉ ๊ฐ๋ฅํด this ๋ ํผ๋ฐ์ค ์ฌ์ฉํ ์ ์๋ค!
static void f() {this.n = x;} // ์ค๋ฅ. static ๋ฉ์๋์์ this ์ฌ์ฉ ๋ถ๊ฐ static void g() {this.m = x;} // ์ค๋ฅ. static ๋ฉ์๋์์ this ์ฌ์ฉ ๋ถ๊ฐโ
- static ๋ฉ์๋๋ ์ค์ง static ๋ฉค๋ฒ๋ง ์ ๊ทผ ๊ฐ๋ฅ
static ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง Calc ํด๋์ค ์์ฑ - ์ ์ญ ํจ์๋ก ์์ฑํ๊ณ ์ ํ๋ abs, max, min 3๊ฐ ํจ์๋ฅผ static ๋ฉ์๋๋ฅผ ์์ฑํ๊ณ ํธ์ถํ๋ ์ฌ๋ก๋ก ๋ณด์ฌ๋ผ.
class Calc{
public static int abs(int a) {
return a > 0? a : -a; // a>0์ด๋ฉด a, ์๋๋ฉด -a ์กฐ๊ฑด๋ฌธ
}
public static int max(int a , int b) {
return (a > b)? a : b;
}
public static int min(int a , int b) {
return (a > b)? b: a;
}
}
public class CalcEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Calc.abs(-5));
System.out.println(Calc.max(10, 8));
System.out.println(Calc.min(-3, -8));
}
}
Calc ํด๋์ค์์ static์ ์ง์ฐ๋ฉด ์ ์ญ ํจ์์ ์ญํ ๋ชปํจ -> ์๋ฌ ๋ฐ์
final ํด๋์ค์ ๋ฉ์๋
- final ํด๋์ค - ๋ ์ด์ ํด๋์ค ์์ ๋ถ๊ฐ๋ฅ
final class FinalClass { .... } class DerivedClass extends FinalClass { // ์ปดํ์ผ ์ค๋ฅ }โ
- final ๋ฉ์๋ - ๋ ์ด์ ์ค๋ฒ๋ผ์ด๋ฉ ๋ถ๊ฐ๋ฅ
public class SuperClass { protected final int finalMethod() {....} } class subClass extends SuperClass { protected int finalMethod() {....} // ์ปดํ์ผ ์ค๋ฅ. ์ค๋ฒ๋ผ์ด๋ฉ ๋ถ๊ฐ๋ฅ }โ
final ํ๋
- final ํ๋, ์์ ์ ์ธ
// ์์ ์ ์ธ ์ ์ฌ์ฉ class SharedClass { public static final double PI = 3.14; }โ
- ์์ ํ๋๋ ์ ์ธ ์์ ์ด๊ธฐ ๊ฐ ์ง์ ํด์ผํจ
- ์์ ํ๋๋ ์คํ ์ค ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
728x90
'PL(Programming Language) > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฐ์ ๊ฐ์ฒด ์๋ฉธ, ๊ฐ๋น์ง, ๊ฐ๋น์ง ์ปฌ๋ ์ (0) | 2021.11.04 |
---|---|
[HackerRank] Java Warmup (0) | 2021.10.14 |
[Java] ์์ฑ์ ๊ฐ๋ ๊ณผ ๋ชฉ์ , this ๋ ํผ๋ฐ์ค, this() ํธ์ถ (0) | 2021.10.14 |
[Java] ๊ฐ์ฒด ์งํฅ์ ๊ฐ๋ , ํน์ง, ํด๋์ค, ๊ฐ์ฒด (0) | 2021.10.13 |
[Java] ์๋ฐ ๋ฐฐ์ด, length, for-each๋ฌธ, 2์ฐจ์ ๋ฐฐ์ด, ๋ฉ์๋์ ๋ฐฐ์ด ๋ฆฌํด (0) | 2021.05.09 |