1. κ°μ
JAVA λ₯Ό 곡λΆνλ©΄ κ°μ₯ μ²μμ λ£κ³ , μμ£Ό λ€μΌλ©°, JAVA κ΄λ ¨ ν¬μ§μ μΌλ‘ μ§μ μ λ§μ λ©΄μ μμλ λ¨κ³¨λ‘ λ±μ₯νλ λ΄μ©λ€μ΄ μλ€. μμμ κ΄ν λ΄μ©λ€μΈλ°, λΆλλ½μ§λ§ κΈ°μ΄μ μΈ λ΄μ©μ΄λΌκ³ μκ°νκ³ κ΄μνκ³ μλ€κ° μ€λ¬΄λ₯Ό νλ©΄μλ ν·κ°λ¦¬λ μκ°μ΄ μ λ² μμλ€. λ§μΉ¨ νκ΅ μμ μΌλ‘ μλ° κ³Όλͺ©μ λ£λ μ€, μ 리νκΈ°μ μ’μ κΈ°νκ° μ겨 νλ² μ 리ν΄λλ €κ³ νλ€.
2. μ κ·Όμ μ΄μ
ν€μλ | μ¬μ© λ²μ | ν΄λμ€μ μ¬μ©ν μ |
public | μ λ²μ | - ν΄λμ€λͺ
κ³Ό μμ€νμΌλͺ
μΌμΉ - ν μμ€νμΌ λ΄μ νλλ§ μ‘΄μ¬ κ°λ₯ |
default (μλ΅) | κ°μ ν¨ν€μ§ λ΄ | |
private | ν΄λΉ ν΄λμ€ λ΄λΆ | InnerClass λ₯Ό μ μν μμλ§ μ¬μ© |
protected | ν΄λΉ ν΄λμ€ λ° μμν΄λμ€ λ΄λΆ | InnerClass λ₯Ό μ μν μμλ§ μ¬μ© |
3. final ν€μλ
- νλ
- μ μΈ ν μ΄κΈ°νκ° μ΄λ£¨μ΄μ§λ©΄ μ λλ‘ κ°μ λ³κ²½ν μ μλ μμκ° λλ€.
- λ©μλ
- μ€λ²λΌμ΄λ©μ΄ λΆκ°λ₯ν΄μ§λ€.
- ν΄λμ€
- ν΄λΉ ν΄λμ€λ₯Ό μμλ°λ μλΈ ν΄λμ€λ₯Ό μ μν μ μλ€.
4. static ν€μλ
- νλ
- νΉμ κ°μ²΄μ static νλκ° μ‘΄μ¬νλ©΄ λ€λ₯Έ μ°Έμ‘°κ°μ κ°μ§λ κ°μ²΄κ° μ무리 λ§μλ κ°μ κ°μ 곡μ νλ€.
- λ©μλ
- κ°μ²΄μ μΈμ€ν΄μ€μ 무κ΄νκ² μ΄λμλ νΈμΆμ΄ κ°λ₯νλ―λ‘ non-static νλλ λ©μλλ₯Ό νΈμΆν μ μλ€.
- ν΄λμ€
- static ν€μλλ μλ ν΄λμ€μλ λΆμΌ μ μμΌλ, μμΈμ μΌλ‘ μ€μ²© ν΄λμ€(inner class) λ₯Ό μ μΈν λμ μ¬μ©ν μ μλ€.
class Scratch {
public static void main(String[] args) throws IOException {
// Static μ€μ²© ν΄λμ€λ λΆλͺ¨ ν΄λμ€ μΈμ€ν΄μ€κ° μμ΄λ μμ±ν μ μμ
OuterClass.NestedStaticClass nsc = new OuterClass.NestedStaticClass();
nsc.printStaticMsg();
// μΌλ° μ€μ²© ν΄λμ€λ λΆλͺ¨ ν΄λμ€ μΈμ€ν΄μ€κ° μ μΈλμ΄μΌμ§λ§ μμ±ν μ μμ
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.printMsg();
// μλμ κ°μ ννλ‘λ μ μΈ κ°λ₯
OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
innerObject.printStaticMsg();
}
}
class OuterClass {
private static String msg = "μ μ λ©μμ§";
private String msg2 = "μΌλ° λ©μμ§";
public static class NestedStaticClass {
public void printStaticMsg() {
System.out.println("[Static μ€μ²© ν΄λμ€μμ νΈμΆ λ¨] : " + msg);
}
// ERROR -> Static μ€μ²© ν΄λμ€μμλ Non-Static νλλ₯Ό νΈμΆν μ μμ
// public void printMsg() {
// System.out.println("[Static μ€μ²© ν΄λμ€μμ νΈμΆ λ¨] : " + msg2);
// }
}
public class InnerClass {
public void printStaticMsg() {
System.out.println("[INNER ν΄λμ€μμ νΈμΆ λ¨]" + msg);
}
public void printMsg() {
System.out.println("[INNER ν΄λμ€μμ νΈμΆ λ¨]" + msg2);
}
}
}
μ€ν κ²°κ³Ό
5. μΊ‘μν
ν΄λμ€ λ΄μ νλλ₯Ό private μ κ·Όμ μ΄μλ‘ μ μΈνμ¬ μΈλΆμμ μ½κ² μ μ΄νμ§ λͺ»νλλ‘ νκ³ , λͺ μμ μΈ public λ©μλλ₯Ό ν΅ν΄ κ°μ μ μ΄νλ€.
6. μ€λ²λ‘λ©κ³Ό μ€λ²λΌμ΄λ©
- μ€λ²λ‘λ©
- λ©μλ μ¬μ μ - μ΄λ¦μ λμΌνλ 맀κ°λ³μκ° λ€λ₯Έ λ©μλλ₯Ό μ μνλ κ²
- μ€λ²λΌμ΄λ©
- μ κ·Όμ μ΄μλ λ²μκ° λμ΄μ§λ μͺ½μΌλ‘ μ¬μ€μ ν μ μλ€.
- λ©μλ μμ μ¬μ μ - λΆλͺ¨μ λ©μλλ₯Ό μμλ°μΌλ©° λ°νν, 맀κ°λ³μ λͺ©λ‘, λ©μλ μ΄λ¦μ κ·Έλλ‘ λκ³ λͺΈμ²΄μ μ μλ₯Ό μλ‘ νλ κ²
λ©μλμ μ΄λ¦κ³Ό 맀κ°λ³μλ₯Ό λ¬Άμ΄ λ©μλμ μλͺ (signature) μ΄λΌκ³ νλ€. ν ν΄λμ€ λ΄μ μλͺ μ΄ λμΌν λκ° μ΄μμ λ©μλκ° μ‘΄μ¬ν μ μλ€.
7. μμκ³Ό μμ±μ
- μμ λ°μ ν΄λμ€λ₯Ό μ»΄νμΌ ν λ λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό νΈμΆνλ€.
- κΈ°λ³Έ μμ±μκ° μ μλμ΄ μμ§ μμ μ μ»΄νμΌλ¬κ° μμ±νλ€.
- κ²°κ΅ λͺ¨λ κ°μ²΄λ Object κ°μ²΄λ₯Ό μμ λ°μΌλ―λ‘ Object μ κΈ°λ³Έ μμ±μλ₯Ό νΈμΆνλ€.
class ParentClass { // extends Object
public ParentClass() {
// super(); -> μ»΄νμΌ μμ μ Object μ κΈ°λ³Έ μμ±μλ₯Ό νΈμΆ νλ€.;
System.out.println("[PARENT] μΈμμλ λΆλͺ¨ ν΄λμ€ νΈμΆμ
λλ€.");
}
public ParentClass(int a) {
System.out.println("[PARENT, PARAM] μΈμμλ λΆλͺ¨ ν΄λμ€ νΈμΆμ
λλ€.");
}
}
class ChildClass extends ParentClass {
public ChildClass() {
// super(); -> μ»΄νμΌ μμ μ λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό νΈμΆνλ€.
System.out.println("[CHILD] μΈμμλ μμ ν΄λμ€ νΈμΆμ
λλ€.");
}
public ChildClass(int a) {
System.out.println("[CHILD, PARAM] μΈμμλ μμ ν΄λμ€ νΈμΆμ
λλ€.");
}
}
class InheritanceConstructor {
public static void main(String[] args) {
ChildClass childClassA = new ChildClass();
ChildClass childClassB = new ChildClass(10);
}
}
μ€νκ²°κ³Ό
'λ ΈνΈ > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Mybatisμ Apache POI λ₯Ό μ΄μ©ν λμ©λ μμ λ€μ΄λ‘λ κ°μ (1) | 2024.01.31 |
---|---|
[JAVA] Thread κΈ°μ΄ (0) | 2022.06.15 |
[JAVA] clone() λ©μλ μ 리 (0) | 2022.04.20 |
[JAVA/λ²μ] Static λ©€λ²λ₯Ό μν JVM μ€ν λ¦¬μ§ (0) | 2022.04.12 |
[JAVA] String Literal κ³Ό String Pool (0) | 2022.03.31 |