Constructor
생성자 constructor 문법으로 메모리 공간 확보와 데이터 저장을 한 번에 할 수 있다.
1. 이름과 전화번호, 주소를 입력할 수 있는 Member class를 만들고,
MemberTest class에서 데이터를 넣어 준다.
Member.java
public class Member {
String name;
String tel;
String address;
void print(){
System.out.println(name);
System.out.println(tel);
System.out.println(address);
}
}
MemberTest.java
public class MemberTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 1. 메모리 공간 확보
Member m1 = new Member(); // 객체. 힙에 생성된 것 instance object = 왼쪽은 변수
// 2. 데이터 저장
m1.name = "홍길동";
m1.tel = "010-1234-5678";
m1.address = "인천시 서구";
Member m2 = new Member();
m2.name = "김돌복";
m2.tel = "010-2221-2278";
m2.address = "인천시 동구";
m1.print();
m2.print();
}
}
Member.java
public class Member {
String name;
String tel;
String address;
// 1. 눈에 안 보이지만, 기본적으로 Member() 이 생성자는 만들어져 있다.
// 따라서 지금까지 에러 없이 잘 사용해왔다.
// 2. 이제는 파라미터가 있는 생성자가 필요하다. 이것은 기본적으로 제공하는 것이 아니므로 만들어줘야 한다.
// 힙에 있는 객체에 있는 파라미터 클래스의 멤버변수에 저장하라
// 단, 생성자는 리턴타입이 없다!!!!!!!!!!
// 생성자 함수 이름은 클래스 이름과 같다!!!!!!!!!
Member(String name, String tel, String address) {
this.name = name;
this.tel = tel;
this.address = address;
}
// 3. 우리가 새로 생성자를 만들면, 기존에 기본적으로 제공한 Member() 이 생성자는 사라진다.
// 따라서 이 생성자도 써 줘야 한다. 메소드 오버로딩으로 만들 수 있다.
Member() {
}
void print(){
System.out.println(name);
System.out.println(tel);
System.out.println(address);
}
}
MemberTest.java
public class MemberTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 1. 메모리 공간 확보
Member m1 = new Member(); // 객체. 힙에 생성된 것 instance object = 왼쪽은 변수
// 2. 데이터 저장
m1.name = "홍길동";
m1.tel = "010-1234-5678";
m1.address = "인천시 서구";
Member m2 = new Member();
m2.name = "김돌복";
m2.tel = "010-2221-2278";
m2.address = "인천시 동구";
m1.print();
m2.print();
// 1. 메모리 공간 확보 + 2. 데이터 저장
Member m3 = new Member("철수", "010-3838-2929", "인천시 남구");
m3.print();
}
}
Member.java
public class Member {
String name;
String tel;
String address;
Member(String name, String tel, String address) {
this.name = name;
this.tel = tel;
this.address = address;
}
Member() {
}
// 주소는 옵셔널 데이터라 안 받을 수도 있다.
// 따라서 이름과 전화번호만 바로 저장할 수 있는 생성자도 만든다.
Member(String name, String tel) {
this.name = name;
this.tel = tel;
}
void print(){
System.out.println(name);
System.out.println(tel);
System.out.println(address);
}
}
MemberTest.java
public class MemberTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 1. 메모리 공간 확보
Member m1 = new Member(); // 객체. 힙에 생성된 것 instance object = 왼쪽은 변수
// 2. 데이터 저장
m1.name = "홍길동";
m1.tel = "010-1234-5678";
m1.address = "인천시 서구";
Member m2 = new Member();
m2.name = "김돌복";
m2.tel = "010-2221-2278";
m2.address = "인천시 동구";
m1.print();
m2.print();
// 1. 메모리 공간 확보 + 2. 데이터 저장
Member m3 = new Member("철수", "010-3838-2929", "인천시 남구");
m3.print();
// 주소는 옵셔널 데이터라 안 받을 수도 있다.
// 따라서 이름과 전화번호만 바로 저장할 수 있는 생성자도 만든다.
Member m4 = new Member("제인", "010-3333-9999");
m4.print();
}
}
생성자(Constructor)도 메소드인가? :: 자바캔(Java Can Do IT) (tistory.com)