๐Ÿ“•JAVA

[JAVA] ์ƒ์„ฑ์ž

๋น™๋””์šฉ 2023. 6. 19.

1. ์ƒ์„ฑ์ž

public class Member {
    String name;
    int age;
    int grade;
    
    //์ƒ์„ฑ์ž
    void initMember(String name, int age, int grade) {
    	this.name = name;
        this.age = age;
        this.grade = grade;
	}
}

- initMember์—์„œ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ์ •์˜ํ•œ String name๊ณผ Member์˜ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™๋‹ค.

- ์ด ๊ฒฝ์šฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ณด๋‹ค ์ฝ”๋“œ ๋ธ”๋Ÿญ์ด ๋” ์•ˆ์ชฝ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.

- ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์— .this๋ฅผ ๋ถ™์—ฌ ์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ .this๋Š” ์ธ์Šคํ„ด์Šค ์ž์‹ ์˜ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

- ํ•„๋“œ ์ด๋ฆ„๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ this๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.

 

2. ์ƒ์„ฑ์ž ์žฅ์ 

1) ์ค‘๋ณต ํ˜ธ์ถœ ์ œ๊ฑฐ

//์ƒ์„ฑ์ž ๋“ฑ์žฅ ์ „
MemberInit member = new MemberInit();
member.initMember("user1", 15, 90);

//์ƒ์„ฑ์ž ๋“ฑ์žฅ ํ›„
MemberConstruct member = new MemberConstruct("user1", 15, 90);

- ์ƒ์„ฑ์ž์˜ ๋“ฑ์žฅ์œผ๋กœ ๋ฉ”์„œ๋“œ ์ง์ ‘ ํ•œ๋ฒˆ ๋” ํ˜ธ์ถœํ•ด์•ผํ•˜๋Š” ์ž‘์—… ์ƒ๋žต ๊ฐ€๋Šฅ

 

2) ์ œ์•ฝ - ์ƒ์„ฑ์ž ํ˜ธ์ถœ ํ•„์ˆ˜

- ์ƒ์„ฑ์ž ๋“ฑ์ž” ์ „ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ initMember์„ ์‹คํ–‰์‹œํ‚ค์ง€ ์•Š์•„๋„ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•œ๋‹ค. (ํ•„์ˆ˜๋กœ ์ž…๋ ฅ๋˜์–ด์•ผ ํ•˜๋Š”์œ ์ €์˜ ์ •๋ณด๊ฐ€ ์—†์ด ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค)

- ์ƒ์„ฑ์ž๋Š” ์ง์ ‘ ์ •์˜ํ•œ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ํ˜ธ์ถœํ•ด์•ผ ๋œ๋‹ค๋Š” ์ ์—์„œ ํŠน์ • ์ œ์•ฝ์„ ์ƒ์„ฑํ•œ๋‹ค.

   ์˜ค๋ฅ˜) onstructor found for MemberConstruct(no arguments)

 

3) ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์ˆ˜๊ฐ’ ์ž…๋ ฅ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

- ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜๋„ ์—†์„ ์‹œ, ์ž๋ฐ”๋Š” ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

- ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ํŠน์ • ๊ฐ’์„ ํ•„์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ƒ์„ฑ์ž - ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ this()

1) ์˜ค๋ฒ„๋กœ๋”ฉ

public class Member {
    String name;
    int age;
    int grade;
    
    //์ƒ์„ฑ์ž
    void initMember(String name, int age, int grade) {
    	this.name = name;
        this.age = age;
        this.grade = grade;
	}
    
    //์ถ”๊ฐ€
	void initMember(String name, int age) {
    	this.name = name;
        this.age = age;
        this.grade = 50;
	}
}

- ์ถ”๊ฐ€ํ•œ ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ grade๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” ๋Œ€์‹ ์— 50์œผ๋กœ ๊ณ ์ •์ด ๋œ๋‹ค.

- ์ƒ์„ฑ์ž๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉํ•œ ๊ฒฝ์šฐ ์„ฑ์  ์ž…๋ ฅ์ด ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” grade๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๊ฐ€, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” grade๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

 

2) this

- ๋‘ ์ฝ”๋“œ์˜ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์ธ this. ๋ถ€๋ถ„์„ this()๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ ์ž์‹ ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

public class MemberConstruct {
     String name;
     int age;
     int grade;
     
	//์ƒ์„ฑ์ž
    void initMember(String name, int age, int grade) {
    	this.name = name;
        this.age = age;
        this.grade = grade;
	}
     
     MemberConstruct(String name, int age) { 
     	this(name, age, 50); //๋ณ€๊ฒฝ
	}
}

 

์ถœ์ฒ˜ : ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ”-๊ธฐ๋ณธํŽธ 

๋Œ“๊ธ€