Tiny Bunny
λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’»/JAVA

[JAVA] μƒμ„±μžμ™€ this.

by soonybutter 2024. 8. 10.
728x90

λ“œλ””μ–΄ μ •λ¦¬ν•˜λŠ” μƒμ„±μž, 
객체지ν–₯언어인 μžλ°”μ—μ„œ μƒμ„±μžλŠ” λ„ˆλ¬΄ μ€‘μš”ν•œ κ°œλ…μ΄λ‹€.
κ³΅λΆ€ν•œ 뢀뢄을 ν•˜λ‚˜μ”© μ •λ¦¬ν•΄λ³΄μž! 
 
 

μƒμ„±μž (constructor)

 

  • μƒμ„±μž(constructor)λŠ” 객체지ν–₯μ–Έμ–΄μ—μ„œ 객체λ₯Ό μƒμ„±ν•˜λŠ” μ‹œμ μ— μ–΄λ– ν•œ μž‘μ—…μ„ ν•˜κΈ°μœ„ν•΄ μ΄μš©ν•œλ‹€.
  • "객체 생성 μ‹œ, 무쑰건 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜"λ‹€.
  • λ©”μΈλ¬Έμ—μ„œ 객체λ₯Ό μƒμ„±ν•˜λ©΄ 클래슀 내뢀에 λ³΄μ΄μ§€μ•Šλ”λΌλ„ (클래슀 내뢀에) μžλ™μœΌλ‘œ μƒμ„±λœλ‹€.
  • λ°˜ν™˜νƒ€μž…μ΄ μ—†λ‹€.
  • ν΄λž˜μŠ€μ™€ 이름이 κ°™μ•„μ•Όν•œλ‹€.

 
 
 
μ•„λž˜μ™€ 같이 3개의 λ©€λ²„λ³€μˆ˜λ“€μ„ κ°€μ§€λŠ” Member ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•œλ‹€.
이 클래슀의 객체λ₯Ό λ©”μΈν•¨μˆ˜μ—μ„œ μƒμ„±ν•˜κ²Œ 되면,
Member 클래슀 λ‚΄λΆ€μ—λŠ” 보이지 μ•Šμ§€λ§Œ μžλ™μœΌλ‘œ Member(){} μƒμ„±μžκ°€ λ§Œλ“€μ–΄μ§„λ‹€.
 

public class Member {
    private String name;
    private int age;
    private int grade;
    
    //μƒμ„±μžκ°€ μžλ™μœΌλ‘œ 생성됨.
    Member(){
      
    }

 

public class MethodInitMain1 {
    public static void main(String[] args) {
        Member member1= new Member();
        member1.name="sally";
        member1.age=15;
        member1.grade=90;
        
    }

 

  • μœ„μ—μ²˜λŸΌ μ •λ³΄λ³΄ν˜Έλ₯Ό μœ„ν•΄ private둜 μ„ μ–Έμ„ν•œ λ©€λ²„λ³€μˆ˜λŠ” 접근이 μ•ˆλ˜κΈ° λ•Œλ¬Έμ— 자기 μžμ‹ μ˜ 데이터λ₯Ό λ³€κ²½ν•  수 μžˆλŠ” 멀버 ν•¨μˆ˜λ₯Ό setμ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ λ§Œλ“œλŠ”κ²ƒμ΄ μΌλ°˜μ μ΄λ‹€
  • ν΄λž˜μŠ€λŠ” 자기 μžμ‹ μ˜ 데이터λ₯Ό μΆ”κ°€ν•˜λŠ” κΈ°λŠ₯(λ©”μ„œλ“œ,ν•¨μˆ˜)을 μ œκ³΅ν•˜λŠ” 것이 μ’‹λ‹€. 

 
 

 
 

this

 
클래슀 λ‚΄ 'λ©€λ²„λ³€μˆ˜'와 'λ©€λ²„ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜'의 이름이 κ°™λ‹€λ©΄ λ‘˜μ„ κ΅¬λ³„ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ.
 
이런 경우, 기본적으둜  λ©€λ²„λ³€μˆ˜ < λ©€λ²„ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜ 의 μš°μ„ μˆœμœ„λ₯Ό 가진닀.
λ§Œμ•½ λ©€λ²„λ³€μˆ˜μ— μ ‘κ·Όν•˜λ €λ©΄ this.λ₯Ό λΆ™μ—¬ μΈμŠ€ν„΄μŠ€ μžμ‹ μ˜ 참쑰값을 가리킬것을 밝히면 λœλ‹€.
 
thisλŠ” μΈμŠ€ν„΄μŠ€ 자기 μžμ‹ μ„ 가리킨닀!
 
 
 
 


public class Member {
    private String name;
    private int age;
    private int grade;

    //μƒμ„±μž
    Member(String a, int b, int c){
        this.name=a;
        this.age=b;
        this.grade=c;

        //λ˜λŠ” this.init(a,b,c);
    }

    //λ©€λ²„ν•¨μˆ˜
    public int sum(){
        return this.age+ this.grade;
    }

    //λ©€λ²„ν•¨μˆ˜
    public void init(String a, int b, int c){
        this.name= a;
        this.age= b;
        this.grade= c;
    }
}

 

public class MethodMain1 {
    public static void main(String[] args) {

        //1방식
        Member member1 = new Member("DY",22,100);

        //2방식
        // Member member1 = new Member();
        // member1.init("DY",22,100);

        System.out.println(member1.sum());


    }
}

 
 
[1방식]
1. λ³€μˆ˜μ΄λ¦„ member1으둜 Member 클래슀 객체λ₯Ό λ§Œλ“€κ³ , λ§€κ°œλ³€μˆ˜λ‘œ '"DY","22","100"'을 λ„£μ–΄μ€€λ‹€.
2. Member 클래슀 λ‚΄λΆ€μ˜ μƒμ„±μžμ—μ„œ λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„ λ§€κ°œλ³€μˆ˜λ“€ 
 private String name;
 private int age;
 private int grade;  의 κ°’μœΌλ‘œ 각각 λŒ€μž…ν•œλ‹€. 
3. λ©”μΈν΄λž˜μŠ€λ‘œ λŒμ•„μ™€ System.out.println(member1.sum()); 의 sum()에 각각 λ©€λ²„λ³€μˆ˜λ“€μ΄ κ°€λ¦¬ν‚€λŠ” '22'와 '100'을 λŒ€μž…ν•΄ 합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€.
 
 
 
[2방식]
1. 이 경우 μ²˜μŒμ— 객체λ₯Ό μƒμ„±ν• λŒ€ λ§€κ°œλ³€μˆ˜λŠ” μ—†λŠ” μƒμ„±μžλ₯Ό μ‚¬μš©ν•œλ‹€. 
 Member member1 = new Member();
2. 그리고 member1의 μ΄ˆκΈ°κ°’μ„ init() λ©€λ²„ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ“€λ‘œ 직접 λŒ€μž…ν•œλ‹€.
3. init() λ‚΄λΆ€μ˜ λ³€μˆ˜λ“€μ„ 톡해 λ§€κ°œλ³€μˆ˜λ“€  
 private String name;
 private int age;
 private int grade;  μ˜ κ°’μœΌλ‘œ 각각 λŒ€μž…ν•œλ‹€. 
4. λ©”μΈν΄λž˜μŠ€λ‘œ λŒμ•„μ™€ System.out.println(member1.sum()); 의 sum()에 각각 λ©€λ²„λ³€μˆ˜λ“€μ΄ κ°€λ¦¬ν‚€λŠ” '22'와 '100'을 λŒ€μž…ν•΄ 합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€.
 
 
 
 
 
πŸ’» Tip. 
- μƒμ„±μžμ™€ λ§€κ°œν•¨μˆ˜ κ΅¬λΆ„ν•˜κΈ°! 

 
 
 
 
 
 
 
 
 
 
 
 
ν‹€λ¦° λΆ€λΆ„μ΄λ‚˜ μ΄μƒν•œ λΆ€λΆ„이 μžˆμœΌλ©΄ λŒ“κΈ€λ‘œ μ§€μ ν•΄μ£Όμ„Έμš”! 
κ°μ‚¬ν•©λ‹ˆλ‹€ :)

728x90

TOP

Designed by ν‹°μŠ€ν† λ¦¬