πŸ“•λ©€λ²„ λ³€μˆ˜μ™€ λ©”μ†Œλ“œ

dev_itzel_02✨·2024λ…„ 8μ›” 26일
post-thumbnail

πŸ·οΈλ©€λ²„ λ³€μˆ˜

클래슀 내뢀에 μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜λ©°, 이 λ³€μˆ˜λ“€μ€ 객체의 속성을 ν‘œν˜„

  • 객체가 생성될 λ•Œ, 각 κ°μ²΄λ§ˆλ‹€ λ³„λ„μ˜ 곡간에 μƒμ„±λ˜λ©° 객체 λ‚΄λΆ€μ—μ„œ 곡유됨.
  • 각 κ°μ²΄λ§ˆλ‹€ 독립적인 곡간(μ„œλ‘œ λ‹€λ₯Έ λ©”λͺ¨λ¦¬κ³΅κ°„)을 κ°€μ§€λ―€λ‘œ κ°μ²΄λ§ˆλ‹€ 각각 λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 있음.
  • 직접 접근이 κ°€λŠ₯ν•˜μ§€λ§Œ, 보톡 private μ ‘κ·Όμ œμ–΄μžλ₯Ό μ‚¬μš©ν•΄ μ™ΈλΆ€μ—μ„œμ˜ 접근을 μ œν•œν•¨. λ”°λΌμ„œ getter와 setter λ©”μ†Œλ“œλ₯Ό 톡해 μ ‘κ·Όν•  수 있음.
  • 즉, 멀버 λ³€μˆ˜μ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ€ 였직 객체 μžμ‹ λ§Œμ΄ κ°€μ§€κ³  있고, getter와 setter λ©”μ†Œλ“œλ₯Ό 톡해 멀버 λ³€μˆ˜μ— μ ‘κ·Όν•˜λ €λŠ” μ™ΈλΆ€ κ°μ²΄μ—κ²Œ μ ‘κ·Ό κΆŒν•œμ„ λΆ€μ—¬ν•  μˆ˜λ„ μ•ˆν•  μˆ˜λ„ 있음.

πŸ·οΈλ©”μ†Œλ“œ

νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œμ˜ μ§‘ν•©μœΌλ‘œ, 클래슀 내뢀에 μ„ μ–Έ

  • 이름, λ§€κ°œλ³€μˆ˜, λ°˜ν™˜ νƒ€μž…, 그리고 λ©”μ†Œλ“œ 본문으둜 ꡬ성
  • μ˜€λ²„λ‘œλ”©μ΄ κ°€λŠ₯함.
    μžλ°”μ˜ ν•œ 클래슀 내에 이미 μ‚¬μš©ν•˜λ €λŠ” 이름과 같은 이름을 κ°€μ§„ λ©”μ†Œλ“œκ°€ μžˆλ”λΌλ„ λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ΄ λ‹€λ₯΄λ©΄, 같은 이름을 μ‚¬μš©ν•΄μ„œ λ©”μ†Œλ“œ μ •μ˜ν•  수 있음.

β˜πŸΌν•¨μˆ˜μ˜ 이름이 λ™μΌν•˜μ§€λ§Œ λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜κ°€ λ‹€λ₯Έ 경우

int cal(int a, int b)
int cal(int a, int b, int c)

βœŒπŸΌν•¨μˆ˜μ˜ 이름이 λ™μΌν•˜μ§€λ§Œ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ λ‹€λ₯Έ 경우

int cal(int a, int b)
int cal(double a, double b)
  • λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 데이터λ₯Ό 받아듀이고, return문을 톡해 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•¨.

πŸ·οΈμ ‘κ·Όμžμ™€ μ„€μ •μž

μ ‘κ·Όμž(getter)와 μ„€μ •μž(setter)λŠ” 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μΊ‘μŠν™”λ₯Ό κ΅¬ν˜„ν•˜λŠ” 기법

  • private 멀버 λ³€μˆ˜μ— λŒ€ν•΄ public λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•˜μ—¬ μ™ΈλΆ€μ—μ„œ μ§μ ‘μ μœΌλ‘œ 멀버 λ³€μˆ˜μ— μ ‘κ·Όν•˜λŠ” 것을 μ œν•œν•˜κ³ , λ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ 멀버 λ³€μˆ˜μ— μ ‘κ·Όν•˜λ„λ‘ 함.
μ ‘κ·Όμ œμ–΄μž μ’…λ₯˜ν—ˆμš© λ²”μœ„
publicμ–΄λ–€ ν΄λž˜μŠ€μ—μ„œλ“  μ ‘κ·Ό κ°€λŠ₯
protected같은 νŒ¨ν‚€μ§€ λ‚΄μ˜ 클래슀 & ν•΄λ‹Ή 클래슀λ₯Ό 상속받은 μ™ΈλΆ€ νŒ¨ν‚€μ§€μ˜ 클래슀(μžμ‹ 클래슀)μ—μ„œ μ ‘κ·Ό κ°€λŠ₯
default같은 νŒ¨ν‚€μ§€ λ‚΄μ˜ ν΄λž˜μŠ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
privateλ™μΌν•œ 클래슀 λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯

e.g.

<AccessModifiers.java>

public class AccessModifiers {
    public int publicVar = 0; // μ–΄λ””μ„œλ“  μ ‘κ·Ό κ°€λŠ₯
    protected int protectedVar = 1; // 같은 νŒ¨ν‚€μ§€ & μžμ‹ ν΄λž˜μŠ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯
    int defaultVar = 2; // 같은 νŒ¨ν‚€μ§€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
    private int privateVar = 3; // 같은 ν΄λž˜μŠ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
    
    public void publicMethod() {
        System.out.println("public");
    }
    
    protected void protectedMethod() {
        System.out.println("protected");
    }
    
    void void defaultMethod() {
        System.out.println("default");
    }
    
    private void privateMethod() {
        System.out.println("private");
    }
}

<Main.java>

public class Main {
    public static void main(Stirng[] args) {
        AccessModifiers am = new AccessModifiers();
        
        System.out.println("public");
        am.publicMethod(); // μ ‘κ·Ό κ°€λŠ₯
        
        // 좜λ ₯이 λœλ‹€λ©΄, 같은 νŒ¨ν‚€μ§€λΌλŠ” 의미
        System.out.println("protected");
        am.protectedMethod(); 
        
        // 좜λ ₯이 λœλ‹€λ©΄, 같은 νŒ¨ν‚€μ§€λΌλŠ” 의미
        System.out.println("default");
        am.defaultMethod();
        
        // μ ‘κ·Ό λΆˆκ°€
        // μ—λŸ¬ λ°œμƒ
        System.out.println("private");
        am.privateMethod();
    }
}
profile
πŸœπŸ‘£steadinessπŸœπŸ‘£

0개의 λŒ“κΈ€