[JAVA] static, final μ°¨μ΄
in Tech-Stack on JAVA
Contents
static
λ©€λ²λ₯Ό μ μΈν λλ μΈμ€ν΄μ€ λ©€λ²μ ν΄λμ€ λ©€λ²λ‘ μ μΈν μ μλ€.
- μΈμ€ν΄μ€ λ©€λ² : κ°μ²΄κ° λ§λ€μ΄μ ΈμΌ μκΈ°λ λ©€λ²λ€
- κ°μ²΄(μΈμ€ν΄μ€)κ° μμ±λλ©΄ κ°μ²΄λ§λ€ μλμΌλ‘ μμ±λλ λ©€λ²
- κ°μ²΄λ§λ€ κ°λ³μ μΌλ‘ κ°μ Έλλ μμ±μΌ λ μ μΈνλ€.
- ν΄λμ€ λ©€λ² = static λ©€λ² : μΈμ€ν΄μ€μ μκ΄μμ΄ μ¬μ©μ΄ κ°λ₯ν λ©€λ²
- ν΄λμ€κ° λ‘λ©λλ©΄ μλμΌλ‘ μμ±λλ€.
- κ° κ°μ²΄λ§λ€ μ‘΄μ¬ν νμκ° μκ³ λͺ¨λ κ°μ²΄κ° νλμ 곡ν΅λ μμ±μ κ°μ§ κ²½μ°μ μ μΈνλ€.
- κ°μ²΄λ₯Ό μμ±νμ§ μμλ ν΄λμ€λͺ
μΌλ‘ λ°λ‘ μ¬μ©μ΄ κ°λ₯νλ€.
static λ³μ
static ν€μλλ₯Ό ν΅ν΄ μμ±ν λ³μλ κΈ°μΈμ΄μ Έμ νκΈ°λλ€.
μΈμ€ν΄μ€ λ³μλ λͺ¨λ μΈμ€ν΄μ€λ§λ€ μ‘΄μ¬νκΈ° λλ¬Έμ thisλ₯Ό ν΅ν΄ ꡬλ³μ΄ κ°λ₯νλ€.
ν΄λμ€ λ©€λ²λ ν ν΄λμ€μ νλλ§ μ‘΄μ¬νκΈ° λλ¬Έμ thisλ‘ κ΅¬λΆνμ§ μλλ€.
νμ§λ§ ν΄λμ€ λ©€λ²μ thisλ₯Ό μ¬μ©ν΄λ μλ¬κ° λ°μνμ§ μλλ€.
class Ex {
int a; // μΈμ€ν΄νΈ λ³μ
static int b; // ν΄λμ€ λ³μ
void print(){
System.out.println("a: " + this.a + ", b: " + b);
// this.bλ‘ μ¬μ©ν΄λ μλ¬κ° λ°μνμ§ μμ
}
}
System.out.println(Ex.b); // κ°μ²΄λ₯Ό μμ±νμ§ μμλ κ°μ²΄λ‘ λ°λ‘ μ κ·Όμ΄ κ°λ₯
static λ©μλ
ν΄λμ€λ§ λ‘λ©λ μνμλ μΈμ€ν΄μ€ λ©€λ²κ° μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ static λ©€λ²κ° μΈμ€ν΄μ€ λ©€λ²μ μ κ·Όν κ²½μ° μλ¬κ° λ°μνλ€.
μΈμ€ν΄μ€ λ©€λ²μ ν΄λμ€ λ©€λ²λ λ©λͺ¨λ¦¬μμ μ¬μ© κ°λ₯ν μμ μ΄ λ€λ₯΄κΈ° λλ¬Έμ ν¨κ» μ¬μ©μ΄ λΆκ°λ₯νλ€.
(μΈμ€ν΄μ€ λ©€λ²κ° μ μΈλκΈ° μ μλ) static λ©μλλ μ€μ§ static λ©€λ²λ§ μ κ·Όν μ μλ€.
class Test {
int a;
static int b;
static int getB() {
return Test.b;
}
// μΈμ€ν΄μ€ λ³μκ° μ‘΄μ¬νκΈ° λλ¬Έμ μλ¬κ° λ°μνλ€.
static int getAB() {
return a + b;
}
}
final
final ν€μλλ ν΄λμ€, λ©μλ, νλμ λΆμΌ μ μλ€.
final ν΄λμ€: μμμ΄ λΆκ°λ₯ν ν΄λμ€final λ©μλ: μ¬μ μ(μ€λ²λΌμ΄λ©)κ° λΆκ°λ₯ν λ©μλfinal νλ: μμ μ μΈ
final ν΄λμ€
finalλ‘ μ μΈλ ν΄λμ€λ μμμ΄ λΆκ°λ₯νλ€.
final class A { ... }
class ASub extends A { ... }
μμ κ°μ΄ μμ±ν κ²½μ° μλ¬κ° λ°μνλ©΄ λ€μκ³Ό κ°μ λ¬Έκ΅¬κ° λμ¨λ€.
The type ASub cannot subclass the final class A
final λ©μλ
class B {
final void method() {
System.out.println("hi");
}
}
class BSub extends B {
void method() {
System.out.println("bye");
}
}
B ν΄λμ€λ₯Ό μμλ°λ BSub ν΄λμ€λ₯Ό μμ±ν λ€ B ν΄λμ€μ method λ©μλλ₯Ό μ€λ²λΌμ΄λ©μ μ€λ²λΌμ΄λ© ν΄λ³΄μλ€.
νμ§λ§ method λ©μλλ finalλ‘ μ μΈλμκΈ° λλ¬Έμ μ¬μ μκ° λΆκ°λ₯νκΈ° λλ¬Έμ μλ¬κ° λ°μνλ€.
final νλ
νλλ₯Ό finalλ‘ μ μΈνλ©΄ μμκ° λλ€.
class C {
final int A = 2;
}
