본문 바로가기

Java

자바 생성자

생성자

[표현법]

public 클래스명([매개변수1, 매개변수2...]) {

}

  • 객체를 생성해주기 위한 목적으로 생성자를 사용합니다 
  • 생성자 작성시 유의사항 1. 반드시 생성자명은 클래스명과 동일해야함 (대/소문자 구분) => 안 그럼 오류! 2. 반환형이 존재하지 않습니다
  • 만일 반환형을 쓰게 되면 메소드로 인식해버립니다
	
    public class User {
	// 필드영역
    
	private String userId;
	private String userPwd;
	private String userName;
	private int age;
	private char gender;
    
    
    // 
    public User() {
		// 기본 생성자(매개변수 없는 생성자)
		// 단지 객체 생성만을 목적으로 할 때 사용합니다
		System.out.println("테스트용"); 
	}

	// 매개변수 생성자
	// 객체 생성과 동시에 전달값들을 매개변수로 받아서 해당 각 필드에 초기화할 목적
	public User(String userId, String userPwd, String userName) {
		this.userId = userId;
		this.userPwd = userPwd;
		this.userName = userName;
	}

	public User(String userId, String userPwd, String userName, int age, char gender) {
		this.userId = userId;
		this.userPwd = userPwd;
		this.userName = userName;
		this.age = age;
		this.gender = gender;
	}

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getUserPwd() {
		return userPwd;
	}

	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public char getGender() {
		return gender;
	}

	public void setGender(char gender) {
		this.gender = gender;
	}

	public String information() {
		return "Id : " + userId + " Password : " + " Name : " + userName + " Age : " + age + " Gender : " + gender;
	}
}

 

 

 

 

 

public class ConstructorRun {
	public static void main(String[] args) {
		
		User u1 = new User();
		System.out.println(u1.information());
		
		// 각 필드에 JVM의 초기 값이 담겨 있음(null,0)
		
		
		// 1. 객체 생성 후 값을 대입하는 방법
		
		// 회원가입 시 필수 입력 사항만 받는다면? - 추상화
		
		/*
		u1.setUserId("boglebogle");
		u1.setUserPwd("9999");
		u1.setUserName("스폰지밥");
		u1.setAge(30);
		u1.setGender('남');
		 */
		
		// 2. 매개변수 3개짜리 생성자로 객체 생성
		User u2 = new User("boglebogle","9999","스폰지밥");
		System.out.println(u2.information());
		
		// 3. 매개변수 전체 필드 넣어서 생성자 만들고 객체 생성
		User u3 = new User("user03", "pwd03", "장원영", 18, 'F');
		System.out.println(u3.information());
		
		// 생성자로 바로 넣으면 될 거 같은데 setter를 굳이 만들어야 하나요?
		// 스폰지밥 => 스폰지송으로 바꾸려고 합니다
		
		// u2.setUserName("스폰지송");
        // setter를 활용해 바꾸려는 부분을 빠르게 바꿔줄 수 있습니다
		// System.out.println(u2.information());
		
		
		// 그럼 getter는 안 만들면 안될까요?
		// 비번을 까먹은 경우에는 비번만을 보여줘야 합니다.
		// getter를 통해 특정 데이터 하나만 던져주고 싶을 때 필요합니다.
		// System.out.println(u2.getUserPwd());
		
		// System.out.println(u1.information());		
		
		
	}
}