2015 IT 웹 기반 개발자과정/JAVA

JAVA 생성자 [ this( ) ]

한여름밤의코딩 2015. 11. 10. 15:23
package src.kr.ac.jnu.day02;

class Member2 {
	private String name;
	private int age;
	private String addr;

//	각 생성자가 다른 생성자를 호출하면서 필드 값 하나만 바꿔도 유지보수가 쉽다
//	하지만 한번 생성자를 호출하면 3번이나 호출되기 때문에 성능이 느려지기 쉽다는 단점이 있다
	
	Member2() {
		this("이름없음"); // 변수 값이  하나인 생성자 호출
		
//		this("이름없음", -1, "주소없음");
		
//		name = "이름없음";
//		age = -1;
//		addr = "주소없음";
	}
	
	Member2(String name) {
		this(name, -1); // 변수 값이  두개인 생성자 호출
		
//		this.name = name;
//		this.age = -1;
//		this.addr = "주소없음";
	}
	
	Member2(String name, int age) {
		this(name, age, "주소없음"); // 변수 값이  세개인 생성자 호출
		
//		this.name = name;
//		this.age = age;
//		this.addr = "주소없음";
	}
	
	public Member2(String name, int age, String addr) {
		this.name = name;
		this.age = age;
		this.addr = addr;
	}



	public void info() {

		System.out.println("name : " + name + "\tage : " + age + "\taddr : " + addr);
	}
	
	
}


//class Member {
//
//	private String name;
//	private int age;
//	private String addr;
//
//	Member() {  // 디폴트 생성자만 바꾸면 유지보수가 쉽지만 각 생성자마다 this.필드명을 반복해야 한다는 단점
//		name = "이름없음";
//		age = -1;
//		addr = "서울";
//	}
//	
//	Member(String name){
//		this(); // 필드 값 중 없는 변수는 초기화 
//		this.name = name;
//	}
//	
//	Member(String name, int age) {
//		this(); // 필드 값 중 없는 변수는 초기화 
//		this.name = name;
//		this.age = age;
//	}
//	
//	Member(String name, int age, String addr) {
//		this(); // 필드 값 중 없는 변수는 초기화 
//		this.name = name;
//		this.age = age;
//		this.addr = addr;
//	}


public class ConstructorMain03 {

	public static void main(String[] args) {
		
		Member2 m = new Member2();
		m.info();
		
		Member2 m2 = new Member2("홍길동");
		m2.info();
		
		Member2 m3 = new Member2("고길동", 20);
		m3.info();
		
		Member2 m4 = new Member2("한길동", 25, "광주광역시 북구");
		m4.info();
	}
}