Java

μƒμ„±μž, this, 객체 κ°„μ˜ ν˜‘λ ₯

쑰밈밍 2022. 2. 22. 17:12

πŸ’‘ μƒμ„±μž Constructor

* κ°μ²΄λ³€μˆ˜μ— 값을 무쑰건 μ„€μ •ν•΄μ•Όλ§Œ 객체가 생성될 수 μžˆλ„λ‘ ν•˜κΈ° -> μƒμ„±μž 이용

 

πŸ”Ž μƒμ„±μž κ·œμΉ™

: 클래슀λͺ…κ³Ό λ©”μ„œλ“œλͺ…이 λ™μΌν•˜λ‹€

: λ¦¬ν„΄νƒ€μž…μ„ μ •μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€ (void도 μ‚¬μš©X)

 

: μƒμ„±μžλŠ” 객체가 생성될 λ•Œ ν˜ΈμΆœλœλ‹€. 즉, new ν‚€μ›Œλ“œκ°€ μ‚¬μš©λ  λ•Œ ν˜ΈμΆœλœλ‹€

package com.company;

class Animal {
    String name;

    void setName(String name) {
        this.name = name;
    }
}

class Dog extends Animal{
    void sleep() {
        System.out.println(this.name + " zzz");
    }
}

class HouseDog extends Dog {
   HouseDog(String name) {	// μž…λ ₯κ°’μœΌλ‘œ λ¬Έμžμ—΄ ν•„μš”λ‘œν•˜λŠ” μƒμ„±μž
       this.setName(name);
   }
    
    void sleep() {
        System.out.println(this.name + " zzz in house ");
    }

    void sleep(int hour) {
        System.out.println(this.name + " zzz in house for " + hour + "hours");
    }
}

public class Main {

    public static void main(String[] args) {
        // HouseDog dog = new HouseDog(); // μž…λ ₯κ°’X -> 였λ₯˜
        HouseDog dog = new HouseDog("puppy");
        
    }
}

* μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λ©΄ setName("puppy") 같은 행동을 객체 μƒμ„±μ‹œμ— μ œμ–΄ν•  수 μžˆλ‹€

 

πŸ’‘ λ””ν΄νŠΈ(default) μƒμ„±μž

: μƒμ„±μžμ˜ μž…λ ₯ ν•­λͺ©μ΄ μ—†κ³  μƒμ„±μž 내뢀에 아무 λ‚΄μš©μ΄ μ—†λŠ” μƒμ„±μž

class Dog extends Animal {
    Dog() {			// default μƒμ„±μž
    }

    void sleep() {
        System.out.println(this.name + " zzz");
    }
}

: ν΄λž˜μŠ€μ— μƒμ„±μžκ°€ ν•˜λ‚˜λ„ μ—†λ‹€λ©΄ μ»΄νŒŒμΌλŸ¬λŠ” μžλ™μœΌλ‘œ λ””ν΄νŠΈ μƒμ„±μžλ₯Ό μΆ”κ°€ν•œλ‹€

* μž‘μ„±ν•œ μƒμ„±μžκ°€ ν•˜λ‚˜λΌλ„ κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€λ©΄ μ»΄νŒŒμΌλŸ¬λŠ” λ””ν΄νŠΈ μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€

 

πŸ’‘ μƒμ„±μž μ˜€λ²„λ‘œλ”©

: ν•˜λ‚˜μ˜ ν΄λž˜μŠ€μ— μ—¬λŸ¬κ°œμ˜ μž…λ ₯ν•­λͺ©μ΄ λ‹€λ₯Έ μƒμ„±μžλ₯Ό λ§Œλ“€ 수 μžˆλ‹€

class HouseDog extends Dog {
   HouseDog(String name) {
       this.setName(name);
   }

    HouseDog(int type) {
       if (type == 1) {
           this.setName("yorkshire");
       } else if (type == 2) {
           this.setName("bulldog");
       }
    }
 }

* 각각의 μƒμ„±μžλ₯Ό μ΄μš©ν•œ 객체λ₯Ό λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•œλ‹€

 

πŸ’‘ this

: μƒμ„±λœ μΈμŠ€ν„΄μŠ€ 슀슀둜λ₯Ό κ°€λ¦¬ν‚€λŠ” μ˜ˆμ•½μ–΄ + μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ λ‹€λ₯Έκ°’을 가진닀

: μžμ‹ μ˜ λ©”λͺ¨λ¦¬λ₯Ό 가리킴

: μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό 호좜

: μžμ‹ μ˜ μ£Όμ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€

 

πŸ”Ž μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” this

 

πŸ”Ž 객체 κ°„μ˜ ν˜‘λ ₯

: κ²°κ³Ό