생성자(Constructor)에 대해 알아보자 with 자바(Java)

DongJoo Kwak·2022년 2월 24일
0

📍자바 생성자를 다시 보다가 정리해봤다! 정리하면 복습이 잘되는 거 같다..많은 질문? 지적? 바랍니다~

📌 생성자 Constructor

1) 객체가 생성될때, 객체의 초기화를 위해 실행되는 메서드. 
	자바의 모든 클래스는 생성자를 가지고 있으며, 
	생성자가 기술 안되어있으면 "기본생성자"가 
	눈에 안보이지만 자동으로 아무것도 없는 형태로 만들어지고 호출한다. 
	
	자바 초기화는 3가지 방식 

2) 초기화 3가지 방식 
	#1. 생성자 : 인스턴스 변수를 초기화 하기 위해 주로 사용 

	#2. 초기화 블럭 : 클래스 블럭 / 인스턴스 블럭 
		[ 구조 ] 
		# 클래스 블럭 : 프로그램시작시 초기화 해줄때 
		static {
			// 초기화에 필요한 코드들...
		}
		# 인스턴스 블럭 : 객체 생성시 초기화 해줄때 
		{
			// 초기화에 필요한 코드들...
		}		

	#3. 명시적 초기화 
		int a = 10; 

✨생성자 선언 및 활용 
	#1. 객체가 생성되는 순간에 new를 통해 자동으로 한번 호출된다. 
		재호출 불가능. (반면 메서드는 필요할때마다 호출가능) 
	#2. 생성자의 이름은 반드시 클래스 이름과 동일 
	#3. 리턴타입 지정 불가 
		return; 키워드 이용하여 상황에따라 강제 종료는 가능
	#4. 매개변수 지정 가능 
	#5. 생성자는 오버로딩 할 수 있다. 
	#6. 목적은 객체 생성시, 필요한 초기 작업을 위함이다. 
		변수값 초기화, 필요한 메모리 확보, 파일 열기,
		네트워크 연결등 객체 활동전 필요한 초기 준비시 이용. 
	
3) 생성자 구조 
	클래스명(){
		// 초기화 코드들... 
	}

📌 기본생성자 default constructor

1) 매개변수가 없는 생성자를 칭함 
	클래스명() {}
	
2) 클래스는 생성자가 하나이상은 반드시 존재한다!
	객체 생성시 반드시 한번 실행 된다. 
	클래스에 명시된 생성자가 하나도 없으면 
	컴파일러가 자동으로 내용없는 기본생성자를 추가한다. 

📌 this 레퍼런스

1) 객체 자기 자신을 가르키는 레퍼런스 이다. 
2) 인스턴스메서드나 생성자에서 사용됨. 
3) this 필요성 
	#1. 지역변수나 매개변수와 인스턴스변수의 이름이 같을 경우
		구별하려는 목적으로 사용
	#2. 메서드가 객체 자기자신의 레퍼런스를 리턴해야하는 경우 사용 

✨ this() 특징
    1) 클래스내 생성자안에서 다른 생성자를 호출할때 사용
    2) 생성자 안에서만 사용가능한 메서드 
    3) 생성자 안에서 다른 생성자의 기능이 필요할 때 사용 
    4) 생성자가 두개이상일 경우 사용 가능 (생성자 오버로딩) 
    5) 다른 생성자 호출시, 반드시 생성자의 첫번째 명령문이 되어야 한다. 
    6) 코드 재사용성을 높이는 방법중 하나.

📌연습코드

class Book3{
	String title;
	String author;
	
	//메인함수 for문에 있는 book[i] = new Book3(title,author); 구문을 통해 생성자 초기화  성공
	Book3(String title, String author){
		this.title = title;
		this.author = author;
	}
}


public class Test81 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		Book3[] book = new Book3[2]; 
		
		
		for( int i = 0 ; i < book.length; i ++) {
			System.out.print(i+1+ "번째 책제목을 입력하세요: ");
			String title = sc.nextLine();
			System.out.print(i +1+ "번째 저자를 입력하세요: ");
			String author = sc.nextLine();
			book[i] = new Book3(title,author);  //생성자에서 책제목과 작가의 이름을 초기화해준다!
		}
		
		for(int i = 0 ; i < book.length ; i++ ) {
			System.out.println(book[i].title+" "+book[i].author);
		}
		
		for(Book3 b : book) {
			System.out.println(b.title+" "+b.author);
		}
	}
}

📍결과

1번째 책제목을 입력하세요: 어린왕자
1번째 저자를 입력하세요: 생택쥐베리
2번째 책제목을 입력하세요: 콩쥐팥쥐
2번째 저자를 입력하세요: 작가미상
책제목 : 어린왕자, 작가 : 생택쥐베리
책제목 : 콩쥐팥쥐, 작가 : 작가미상

📈금융 개발 블로그 : https://quantpro.co.kr/

profile
즐거운 개발 공간

0개의 댓글