์์ฑ์
์์ฑ์ - ํ์ํ ์ด์
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ ์ ์ด๋ค ์์ ์ ํ๊ณ ์ถ๋ค๋ฉด ์์ฑ์(Construct)๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
MemberInit
package construct;
public class MemberInit {
String name;
int age;
int grade;
}
MemberInitMain1
package construct;
public class MemberInitMain1 {
public static void main(String[] args) {
MemberInit member1 = new MemberInit();
member1.name = "user1";
member1.age = 15;
member1.grade = 90;
MemberInit member2 = new MemberInit();
member2.name = "user2";
member2.age = 16;
member2.grade = 80;
MemberInit[] members = {member1, member2};
for (MemberInit s : members) {
System.out.println("์ด๋ฆ: " + s.name + ", ๋์ด: " + s.age + ", ์ฑ์ : " + s.grade);
}
}
}
ํ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋๋ฉด name, age, grade ๊ฐ์ ๋ณ์์ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ค.
ํ์ง๋ง ํ์์ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ ๋ถ๋ถ์ด ๊ณ์ ๋ฐ๋ณต๋๊ณ ์๋ค.
package construct;
public class MemberInitMain2 {
public static void main(String[] args) {
MemberInit member1 = new MemberInit();
initMember(member1, "user1", 15, 90);
MemberInit member2 = new MemberInit();
initMember(member2,"user2", 16, 80);
MemberInit[] members = {member1, member2};
for (MemberInit s : members) {
System.out.println("์ด๋ฆ: " + s.name + ", ๋์ด: " + s.age + ", ์ฑ์ : " + s.grade);
}
}
static void initMember (MemberInit member, String name, int age, int grade) {
member.name = name;
member.age = age;
member.grade = grade;
}
}
initMember(...) ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋ฐ๋ณต์ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ฉ์๋๋ ๋๋ถ๋ถ Member ๊ฐ์ฒด์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ํ ๊ณณ์ ๋๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ๋ฒ์ด๋ค. ์ฝ๊ฒ ์ด์ผ๊ธฐํด์ MemberInit์ด ์๊ธฐ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ(๋ฉ์๋)์ ์ ๊ณตํ๋ ๊ฒ์ด ์ข๋ค.
this
MemberInit - initMember() ์ถ๊ฐ
package construct;
public class MemberInit {
String name;
int age;
int grade;
void initMember (String name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
}
package construct;
public class MemberInitMain2 {
public static void main(String[] args) {
MemberInit member1 = new MemberInit();
member1.initMember("user1", 15, 90);
MemberInit member2 = new MemberInit();
member2.initMember("user2", 16, 80);
MemberInit[] members = {member1, member2};
for (MemberInit s : members) {
System.out.println("์ด๋ฆ: " + s.name + ", ๋์ด: " + s.age + ", ์ฑ์ : " + s.grade);
}
}
}
this
๋ฉค๋ฒ ๋ณ์์ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฉด ๋์ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ผ ํ ๊น?
- ๋ฉค๋ฒ ๋ณ์๋ณด๋ค ๋งค๊ฐ๋ณ์๊ฐ ์ฝ๋ ๋ธ๋ก์ ๋ ์์ชฝ์ ์๊ธฐ ๋๋ฌธ์ ๋งค๊ฐ๋ณ์๊ฐ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
๋ฐ๋ผ์ initMember(String name, ...) ๋ฉ์๋ ์์์ name์ด๋ผ๊ณ ์ ์ผ๋ฉด ๋งค๊ฐ๋ณ์์ ์ ๊ทผํ๊ฒ ๋๋ค. - ๋ฉค๋ฒ ๋ณ์์ ์ ๊ทผํ๋ ค๋ฉด ์์ this.์ด๋ผ๊ณ ํด์ฃผ๋ฉด ๋๋ค. this๋ ์ธ์คํด์ค ์์ ์ ์ฐธ์กฐ๊ฐ์ ๊ฐ๋ฆฌํจ๋ค.
this์ ์๋ต
this๋ ์๋ต ๊ฐ๋ฅํ๋ค. ๋ณ์๋ฅผ ์ฐพ์ ๋ ๊ฐ๊น์ด ์ง์ญ๋ณ์(๋งค๊ฐ๋ณ์๋ ์ง์ญ๋ณ์)๋ฅผ ๋จผ์ ์ฐพ๊ณ ์์ผ๋ฉด ๊ทธ๋ค์์ผ๋ก ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ฐพ๋๋ค. ๋ฉค๋ฒ ๋ณ์๋ ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
package construct;
public class MemberThis {
String nameField;
void initMember (String nameParameter) {
nameField = nameParameter;
}
}
- nameField๋ ๋จผ์ ์ง์ญ๋ณ์(๋งค๊ฐ๋ณ์)์์ ๊ฐ์ ์ด๋ฆ์ด ์๋์ง ์ฐพ๋๋ค. ์ด ๊ฒฝ์ฐ ์์ผ๋ฏ๋ก ๋ฉค๋ฒ ๋ณ์์์ ์ฐพ๋๋ค.
- nameParameter๋ ์ง์ญ๋ณ์(๋งค๊ฐ๋ณ์)์์ ๊ฐ์ ์ด๋ฆ์ด ์๋์ง ์ฐพ๋๋ค. ๋งค๊ฐ๋ณ์๊ฐ ์์ผ๋ฏ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
this์ ์ฝ๋ฉ ์คํ์ผ
package construct;
public class MemberThis {
String nameField;
void initMember (String nameParameter) {
this.nameField = nameParameter;
}
}
this.nameField๋ฅผ ๋ณด๋ฉด this๋ฅผ ์๋ตํ ์ ์์ง๋ง, ์๋ตํ์ง ์๊ณ ์ฌ์ฉํด๋ ๋๋ค.
์ด๋ ๊ฒ this๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ์ฝ๋๊ฐ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋์ผ๋ก ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
์ฝ๊ฒ ์ด์ผ๊ธฐํด์ this๋ฅผ ๊ฐ์ ๋ก ์ฌ์ฉํด์, ์ง์ญ ๋ณ์(๋งค๊ฐ๋ณ์)์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๋์ ๋ณด์ด๋๋ก ๊ตฌ๋ถํ๋ ๊ฒ์ด๋ค.
์์ฑ์ - ๋์
๋๋ถ๋ถ์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์๋ง์ ์ฆ์ ํ์ํ ๊ธฐ๋ฅ์ ์ข ๋ ํธ๋ฆฌํ๊ฒ ์ํํ ์ ์๋๋ก ์์ฑ์๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ ์์ ์ฆ์ ํ์ํ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ค.
MemberConstruct
package construct;
public class MemberConstruct {
String name;
int age;
int grade;
MemberConstruct (String name, int age, int grade) {
System.out.println("์์ฑ์ ํธ์ถ name: " + name + ", age: " + age + ", grade: " + grade);
this.name = name;
this.age = age;
this.grade = grade;
}
}
์์ฑ์๋ ๋ฉ์๋์ ๋น์ทํ์ง๋ง ์ฐจ์ด๊ฐ ์๋ค.
- ์์ฑ์์ ์ด๋ฆ์ ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์์ผ ํ๋ค. ๋ฐ๋ผ์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์์ํ๋ค.
- ์์ฑ์๋ ๋ฐํ ํ์ ์ด ์๋ค. ๋น์๋์ด์ผ ํ๋ค.
- ๋๋จธ์ง๋ ๋ฉ์๋์ ๊ฐ๋ค.
ConstructMain1
package construct;
public class ConstructMain1 {
public static void main(String[] args) {
MemberConstruct member1 = new MemberConstruct("user1", 15, 90);
MemberConstruct member2 = new MemberConstruct("user2", 16, 80);
MemberConstruct[] members = {member1, member2};
for (MemberConstruct s : members) {
System.out.println("์ด๋ฆ: " + s.name + ", ๋์ด: " + s.age + ", ์ฑ์ : " + s.grade);
}
}
}
์์ฑ์ ํธ์ถ
์์ฑ์๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๋์ ์ฆ์ ํธ์ถ๋๋ค.
new ์์ฑ์์ด๋ฆ(์์ฑ์์ ๋ง๋ ์ธ์ ๋ชฉ๋ก)
new ํด๋์ค์ด๋ฆ(์์ฑ์์ ๋ง๋ ์ธ์ ๋ชฉ๋ก)
new ํค์๋๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ง์ง๋ง์ ๊ดํธ( )๋ ํฌํจํด์ผ ํ๋ ์ด์ ๊ฐ ๋ฐ๋ก ์์ฑ์ ๋๋ฌธ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ๋์์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค๋ ์๋ฏธ๋ฅผ ํฌํจํ๋ค.
์์ฑ์ ์ฅ์
์ค๋ณต ํธ์ถ ์ ๊ฑฐ
- ์์ฑ์ ๋๋ถ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ๋๊ธฐ์ ์์ฑ ์งํ์ ํ์ํ ์์ ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์๋ค.
์ ์ฝ - ์์ฑ์ ํธ์ถ ํ์
- ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ง์ ์ ์ํ ์์ฑ์๊ฐ ์๋ค๋ฉด ์ง์ ์ ์ํ ์์ฑ์๋ฅผ ๋ฐ๋์ ํธ์ถํด์ผ ํ๋ค.
์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ ๊ฐ ์ ๋ ฅ์ ๋ณด์ฅํ ์ ์๋ค.
โ๏ธ ์ฐธ๊ณ
์ข์ ํ๋ก๊ทธ๋จ์ ๋ฌดํํ ์์ ๋๊ฐ ์ฃผ์ด์ง๋ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ ์ ์ ํ ์ ์ฝ์ด ์๋ ํ๋ก๊ทธ๋จ์ด๋ค.
๊ธฐ๋ณธ ์์ฑ์
๊ธฐ๋ณธ ์์ฑ์
- ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์๋ฅผ ๊ธฐ๋ณธ ์์ฑ์๋ผ๊ณ ํ๋ค.
- ํด๋์ค์ ์์ฑ์๊ฐ ํ๋๋ ์์ผ๋ฉด ์๋ฐ ์ปดํ์ผ๋ฌ๋ ๋งค๊ฐ๋ณ์๊ฐ ์๊ณ , ์๋ํ๋ ์ฝ๋๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ค๋ค.
- ์์ฑ์๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์๋ฐ๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ง ์๋๋ค.
MemberDefault
package construct;
public class MemberDefault {
String name;
MemberDefault () {
}
}
๊ธฐ๋ณธ์์ฑ์๋ฅผ ์ ์๋์ผ๋ก ๋ง๋ค์ด์ค๊น?
์๋ฐ์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ฃผ์ง ์๋๋ค๋ฉด ์์ฑ์ ๊ธฐ๋ฅ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ํด๋์ค์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ ์ํด์ผ ํ๋ค.
์์ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ํธ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์์ฑ์ - ์ค๋ฒ๋ก๋ฉ๊ณผ this( )
์์ฑ์๋ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ฒ๋ผ ๋งค๊ฐ๋ณ์๋ง ๋ค๋ฅด๊ฒ ํด์ ์ฌ๋ฌ ์์ฑ์๋ฅผ ์ ๊ณตํ ์ ์๋ค.
MemberConstruct - ์์ฑ์ ์ถ๊ฐ
package construct;
public class MemberConstruct {
String name;
int age;
int grade;
MemberConstruct (String name, int age) {
this.name = name;
this.age = age;
this.grade = 50;
}
MemberConstruct (String name, int age, int grade) {
System.out.println("์์ฑ์ ํธ์ถ name: " + name + ", age: " + age + ", grade: " + grade);
this.name = name;
this.age = age;
this.grade = grade;
}
}
๊ธฐ์กด MemberConstruct์ ์์ฑ์๋ฅผ ํ๋ ์ถ๊ฐํด์ ์์ฑ์๊ฐ 2๊ฐ๊ฐ ๋์๋ค.
MemberConstruct(String name, int age)
MemberConstruct(String name, int age, int grade)
package construct;
public class ConstructMain2 {
public static void main(String[] args) {
MemberConstruct member1 = new MemberConstruct("user1", 15, 90);
MemberConstruct member2 = new MemberConstruct("user2", 16);
MemberConstruct[] members = {member1, member2};
for (MemberConstruct s : members) {
System.out.println("์ด๋ฆ: " + s.name + ", ๋์ด: " + s.age + ", ์ฑ์ : " + s.grade);
}
}
}
์์ฑ์๋ฅผ ์ค๋ฒ๋ก๋ฉํ ๋๋ถ์ ์ฑ์ ์ ๋ ฅ์ด ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ grade๊ฐ ์๋ ์์ฑ์๋ฅผ ํธ์ถํ๋ฉด ๋๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ grade๊ฐ ์๋ ์์ฑ์๋ฅผ ํธ์ถํ๋ฉด ๋๋ค. grade๊ฐ ์๋ ์์ฑ์๋ฅผ ํธ์ถํ๋ฉด ์ฑ์ ์ 50์ ์ด ๋๋ค.
์ด๋ this( )๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์์ฑ์ ๋ด๋ถ์์ ์์ ์ ์์ฑ์๋ฅผ ํธ์ถํ ์ ์๋ค.
์ฐธ๊ณ ๋ก this๋ ์ธ์คํด์ค ์์ ์ ์ฐธ์กฐ๊ฐ์ ๊ฐ๋ฆฌํจ๋ค. ๊ทธ๋์ ์์ ์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
MemberConstruct - this( ) ์ฌ์ฉ
package construct;
public class MemberConstruct {
String name;
int age;
int grade;
MemberConstruct (String name, int age) {
this(name, age, 50);
}
MemberConstruct (String name, int age, int grade) {
System.out.println("์์ฑ์ ํธ์ถ name: " + name + ", age: " + age + ", grade: " + grade);
this.name = name;
this.age = age;
this.grade = grade;
}
}
this( ) ๊ท์น
- this( )๋ ์์ฑ์ ์ฝ๋์ ์ฒซ ์ค์๋ง ์์ฑํ ์ ์๋ค.
'Today I Learned(TIL) > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java ๊ธฐ๋ณธํธ ๊ฐ์_์ ๊ทผ ์ ์ด์ (1) | 2024.11.28 |
---|---|
Java ๊ธฐ๋ณธํธ ๊ฐ์_ํจํค์ง (0) | 2024.11.26 |
Java ๊ธฐ๋ณธํธ ๊ฐ์_๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2024.11.26 |
Java ๊ธฐ๋ณธํธ ๊ฐ์_๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ (0) | 2024.11.26 |
Java ๊ธฐ๋ณธํธ ๊ฐ์_ํด๋์ค์ ๋ฐ์ดํฐ (1) | 2024.11.25 |