π μ κ·Όμ μ΄μλ?
μλ°(Java)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄λ‘μ, ν΄λμ€μ κ°μ²΄λ₯Ό μ€μ¬μΌλ‘ ν κ°λ°μ μ§μνλ€. μ΄λ¬ν κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ ν΅μ¬μ μΈ μν μ νλ κ² μ€ νλκ° μ κ·Ό μ μ΄μ(access modifier)μ΄λ€. μλ°μμλ λ€μ― κ°μ§ μ£Όμ μ κ·Ό μ μ΄μλ₯Ό ν΅ν΄ ν΄λμ€μ λ©€λ² λ³μμ λ©μλμ λν μ κ·Όμ ν¨κ³Όμ μΌλ‘ μ μ΄ν μ μλ€.
π default (package-private): ν¨ν€μ§ λ΄μμλ§ μμ λ‘μ΄ μ κ·Ό
λ§μ½ μ κ·Ό μ μ΄μλ₯Ό λͺ μνμ§ μμΌλ©΄, ν΄λΉ λ©€λ²λ defaultλ‘ κ°μ£Όλμ΄ κ°μ ν¨ν€μ§ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ€. μ΄λ₯Ό ν΅ν΄ ν¨ν€μ§ λ΄λΆμμμ μμ λ‘μ΄ μν΅μ΄ κ°λ₯ν΄μ§λ€.
class MyClass {
int myDefaultVariable;
void myDefaultMethod() {
// λ©μλ λ΄μ©
}
}
π public: μ΄λμλ μμ λ‘μ΄ μ κ·Ό
public μ κ·Ό μ μ΄μλ μ΄λ€ ν¨ν€μ§μμλ ν΄λΉ λ©€λ²μ μμ λ‘κ² μ κ·Όν μ μλλ‘ νλ€. λν, λ€λ₯Έ ν¨ν€μ§μ ν΄λμ€μμλ μ κ·Όμ΄ κ°λ₯νλ€. μ΄λ₯Ό ν΅ν΄ λͺ¨λ κ°μ μ μ°ν μν΅μ΄ κ°λ₯ν΄μ§λ€.
public class MyClass {
public int myPublicVariable;
public void myPublicMethod() {
// λ©μλ λ΄μ©
}
}
π protected: μμμ ν΅ν νμ₯ κ°λ₯
κ°μ ν¨ν€μ§ λ΄μμ μ κ·Ό κ°λ₯:
protectedλ‘ μ μΈλ λ©€λ²λ λμΌν ν¨ν€μ§μ μνλ λ€λ₯Έ ν΄λμ€μμλ μμ λ‘κ² μ κ·Όν μ μλ€. μ΄λ λͺ¨λ κ° μ μ°ν μν΅μ κ°λ₯νκ² νλ€.
λ€λ₯Έ ν¨ν€μ§μ μμ ν΄λμ€μμ μ κ·Ό κ°λ₯:
protectedλ‘ μ μΈλ λ©€λ²λ κ°μ ν¨ν€μ§κ° μλ λ€λ₯Έ ν¨ν€μ§μ μνλ ν΄λμ€μμλ μ κ·Όν μ μμ§λ§, ν΄λΉ ν΄λμ€κ° protected λ©€λ²λ₯Ό μ μΈν ν΄λμ€μ μμ ν΄λμ€μΌ κ²½μ°μλ§ κ°λ₯νλ€. μ΄λ μμ κ΄κ³μμ λΆλͺ¨ ν΄λμ€μ μΌλΆ λ©€λ²λ₯Ό μμ ν΄λμ€κ° νμ©ν μ μλλ‘ νλ€.
ν΄λμ€ μΈλΆμμλ μ§μ μ κ·Ό λΆκ°:
protectedλ‘ μ μΈλ λ©€λ²λ κ°μ ν¨ν€μ§ λ΄μμλ μΈλΆ ν¨ν€μ§μ μμ ν΄λμ€μμλ μ§μ μ κ·Όν μ μμ§λ§, μΈλΆ ν¨ν€μ§μ μΌλ°μ μΈ ν΄λμ€λ μΈλΆ ν¨ν€μ§μ ν΄λμ€μ μΈμ€ν΄μ€μμλ μ§μ μ κ·Όν μ μλ€. μ΄λ μ 보 μλμ ν΅ν΄ ν΄λμ€μ μΌλΆλ₯Ό 보νΈνλ€.
μμμμ νμ©:
μ£Όλ‘ μμκ³Ό ν¨κ» μ¬μ©λμ΄, λΆλͺ¨ ν΄λμ€μ protected λ©€λ²λ₯Ό μμ ν΄λμ€μμ μ€λ²λΌμ΄λνκ±°λ μ§μ νμ©ν μ μλ€. μ΄λ ν΄λμ€ κ°μ μ μ°ν μμ ꡬ쑰λ₯Ό κ°λ₯μΌ νλ€.
package com.example;
public class ParentClass {
protected int protectedVariable;
protected void protectedMethod() {
// λ©μλ λ΄μ©
}
}
```java
package com.otherpackage;
import com.example.ParentClass;
public class ChildClass extends ParentClass {
void accessProtectedMember() {
// κ°μ ν¨ν€μ§ λ΄μ μμΌλ―λ‘ protected λ©€λ²μ μ κ·Ό κ°λ₯
int variableValue = protectedVariable;
// λΆλͺ¨ ν΄λμ€μ protected λ©μλ νΈμΆ κ°λ₯
protectedMethod();
}
}
π private: ν΄λμ€ λ΄λΆμμλ§ λ³΄νΈ
private μ κ·Ό μ μ΄μλ κ°μ ν΄λμ€ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ©°, μΈλΆμμλ μ κ·Όν μ μλ€. μ΄λ μ 보 μλ(Encapsulation)μ ν΅ν΄ ν΄λμ€μ λ΄λΆ ꡬνμ 보νΈνλ λ°μ μ¬μ©λλ€. (getterμ setterλ₯Ό μ΄μ©ν΄μ μ κ·Όμ νμ©.)
public class ProductDTO {
private int pid;
private String name;
private int price;
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
π final: μμ μ΄ λΆκ°λ₯ν μμ μ±
λ§μ§λ§μΌλ‘, final μ κ·Ό μ μ΄μλ ν΄λΉ λ©€λ²κ° μ΅μ’ μ μΌλ‘ μμ λ μ μμμ λνλΈλ€. ν΄λμ€, λ©μλ, λ³μμ μ μ©λ μ μμ΄, μ½λμ λΆλ³μ±μ μ μ§ν λ μ μ©νλ€. finalμ΄ λΆμ 건 λΆλ³μ΄λ€. κ·Έλ¬λ―λ‘ λ©€λ² λ³μλ₯Ό μ΄κΈ°ννλ μμ±μμμ μ΄κΈ°ν νμ§ μκ³ ν΄λμ€μμ μ΄κΈ°ννλ€.
public final class MyFinalClass {
final int myFinalVariable = 10;
final void myFinalMethod() {
// λ©μλ λ΄μ©
}
}
π‘ κ²°λ‘
μλ°μ λ€μν μ κ·Ό μ μ΄μλ€μ μ μ ν νμ©ν¨μΌλ‘μ¨ μ½λμ μμ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν¬ μ μλ€. κ°κ°μ νΉμ±μ μ΄ν΄νκ³ μ μ©νμ¬ μ½λ©νλ©΄, λ³΄λ€ κ²¬κ³ νκ³ μ λ’°μ± μλ μννΈμ¨μ΄λ₯Ό κ°λ°ν μ μλ€. μλ°μ κ°μ²΄ μ§ν₯ νΉμ±μ μ΅λν νμ©νλ κ²μ΄ μ’μ κ² κ°λ€!
'JAVA > Theory' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| μλ°(Java)μμ NullPointerException (0) | 2023.12.21 |
|---|---|
| μλ°(Java)μ μ μ΄λ¬Έ (0) | 2023.12.18 |
| λ°°μ΄ λ¦¬μ€νΈ(Array List) (0) | 2023.12.17 |
| μλ°(Java)μ μ°μ°μ (0) | 2023.12.14 |
| μλ°(Java)μ λ³μμ μλ£ν (0) | 2023.12.14 |
λκΈ