클래스의 멤버변수에 데이터를 세팅하는 방법은 세가지가 있다.
- 다이렉트로 저장
- 함수로 저장
- 생성자를 호출할때 저장 (메모리에 영역을 확보하고 바로 멤버변수에 데이터 세팅)
여기서 생성자는 메모리의 heap 영역에 클래스를 만들면서 작업을 할수있게하는 함수다.
# 메인에서 클래스를 사용할수있게 하는것
주소록 서비스를 위한 멤버데이터를 저장하는 클래스를 만들었다.
public class Member {
String name;
String tel;
String address;
void print() {
System.out.println("Name: "+name+" , Tel: "+tel);
System.out.println("Address: "+address);
}
void setMember(String name,String tel,String address ) {
this.name = name;
this.tel = tel;
this.address = address;
}
}
# 보기쉽게 출력할수있도록 print 함수를 만들었다.
# setMember 함수를 만들어서 메인에서 객체를 생성한 후 데이터를 저장할수 있도록 한다.
# 같은 클래스 내에서는 앞에 따로 데이터타입을 입력하지 않아도 된다. (단, 함수의 파라미터에는 메인에서 넣어줄 데이터 타입을 지정해줘야 하니 데이터타입을 입력한다.)
# this를 사용하여 해당 클래스의 멤버변수(3번째 줄부터 5번째 줄까지) 인것을 표현했고 ' = ' 의 오른쪽의 변수는 로컬변수 (함수에 묶여있는 변수) 로 구분할수있다.
메인 클래스를 확인해보자.
public class MemberMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Member m1 = new Member();
Member m2 = new Member();
m1.print();
m1.name = "Mike";
m1.tel = "010-1234-5678";
m1.address = "Seoul 101";
m1.print();
m2.setMember("John", "010-8765-4321","Seoul 102");
m2.print();
}
}
# 생성자를 호출하여 객체를 생성했다. (이제 이 객체마다 데이터를 저장할수있다.)
# new 를 사용하여 heap에 객체를 찍을수있다.
# m1에는 데이터를 일일이 다이렉트로 저장했다.
# m2에는 setMember 함수를 사용해서 데이터를 저장했다.
이제 생성자를 호출할때 데이터를 저장할수있도록 만들자.
Member(String name,String tel,String address){
this.name = name;
this.tel = tel;
this.address = address;
}
# 해당 클래스와 똑같은 이름으로 만든다.
# 파라미터로는 들어갈 데이터의 데이터 타입과 멤버변수의 이름을 입력한다.
# 그 후 this를 활용하여 멤버변수와 로컬변수를 구분한다.
메인클래스에서 생성자를 호출하면서 데이터를 세팅하자.
Member m1 = new Member("Mike","010-1234-5678","Seoul 101");
m1.print();
위 방법으로만 코드를 입력하면 단순히 생성자를 호출할때 오류가 발생한다.
이를 해결하기위해 오버로딩을 활용해서 생성자를 호출할수있도록 하자.
Member(){
}
# 위와 비슷한 형식의 속이 빈 코드를 작성했다.
메인에서 확인해보자.
Member m2 = new Member();
m2.setMember("John", "010-8765-4321","Seoul 102");
m2.print();
# 이제 생성자 호출이 잘 이루어진다.
'Java' 카테고리의 다른 글
| [Java] 멤버변수 저장하기, 가져오기 : setter, getter (0) | 2022.07.04 |
|---|---|
| [Java] 패키지, 접근제어자: public, private, protected (0) | 2022.07.04 |
| [Java] 메소드 오버로딩(Method Overloading) (0) | 2022.07.01 |
| [Java] 메모리 구성과 Static (0) | 2022.07.01 |
| [Java] 클래스(Class), 객체(instance, Object) (0) | 2022.07.01 |
댓글