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;
}
}
initMember(String name...)
메서드에서 정의한 매개변수 이름이 MemberInit
클래스의 멤버 변수 이름(name
, age
, grade
)과 동일하다.
⇒ ❓ 둘을 구분 하는 방법?
initMember(String name,...)
메서드 안에서 name
이라고 적으면 매개변수에 접근하게 된다.this.
를 붙이면 된다.
→ this
는 인스턴스 자신의 참조값을 가리킨다.<aside> 📌
this의 생략
public class MemberThis {
String nameField;
void initMember(String nameParameter) {
nameField = nameParameter;
}
}
</aside>
객체를 생성하고 이후에 바로 초기값을 할당해야 하는 경우가 많아, 이 기능을 좀 더 편리하게 수행할 수 있도록 생성자라는 기능을 제공한다.
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;
}
}
<aside> 📌
생성자 규칙
✅ 생성자 호출
new 생성자이름/클래스이름(생성자에 맞는 인수 목록)
✅ 생성자의 장점
생성자가 없던 시절, 생성 직후 작업을 수행하기 위해 메서드를 직접 한번 더 호출해야 했다. 생성자 덕분에 객체를 생성하면서 동시에 직후 필요한 작업을 한번에 처리 가능.
//생성자 등장 전
MemberInit member = new MemberInit();
member.initMember("user1", 15, 90);
//생성자 등장 후
MemberConstruct member = new MemberConstruct("user1", 15, 90);
✅ 제약 - 생성자 호출 필수