JAVA_24_생성자

21000 단어 JavaJava

생성자constructor

  • 인스턴스 초기화 메소드
  • 인스턴스 생성 시, iv 초기화 메소드로 사용
  • 목적 : iv 초기화를 편리하게 하려고

예)

Time t = new Time();	//기본생성자 호출!!
t.hour = 12;
t.minute = 34;
t.second = 56;

-> 클래스 안에 매개변수 있는 생성자를 만들어 놓으면
-> 아래와 같이 간단히! 깔끔하게! 쓸 수 있다.

Time t = new Time(12, 34, 56);	//매개변수 있는 생성자 호출
  • 생성자 : Time() , Time(12, 34, 56)
  • 기본생성자 : Time()
  • 매개변수 있는 생성자 : Time(12, 34, 56)
  • 두번째는 매개변수가 있는 생성자 추가를 해야 사용할 수 있다.

생성자 규칙

1. 클래스명과 이름이 같아야 한다.

2. 반환return이 없다.✨(void 안붙임)

3. 모든 클래스는 ✨반드시 생성자 하나 이상을 가져야 한다.

4.✨✨✨모든 생성자의 첫 줄에 반드시 생성자를 호출해야 한다


기본생성자(default constructor)

  • 매개변수가 없는 생성자 종류
  • 생성자가 하나도 없을 때만 컴파일러가 자동 추가
    -> 그래서 여태 따로 기본생성자를 내가 직접 만들지 않았던 것!!!
  • ✨✨1클래스 & 1+생성자✨✨
  • 클래스명() {}


예제) Ex6_11

  1. 매개변수가 없는 생성자
클래스명() {}	//기본생성자
클래스명() {
	// 생성자
	// iv 초기화
}
  1. 매개변수가 있는 생성자
클래스명() {}    //기본생성자
클래스명(타입 매개변수명1, 타입 매개변수명2...) {
	// 생성자	
	// 1개 이상의 매개변수
	// iv 초기화
}

class Data_1{
	int value;
	
	Data_1(){}		// 생성자가 없으므로 컴파일러가 자동 추가
    				// 따라서 내가 따로 쓸 필요가 없음
}

class Data_2{
	int value;
	
	Data_2(){}		// 기본생성자 
	
	Data_2(int x){		// (매개변수가 있는)생성자
		value = x;
	}
}

public class Ex6_11 {

	public static void main(String[] args) {
		// 기본생성자와 생성자
		
		Data_1 d1 = new Data_1();	//기본생성자 호출
		Data_2 d2 = new Data_2();	//기본생성자 호출

	}

}


예제) Ex6_12

Car c = new Car("white", "auto", 4);
  ①      ②           ③

Car타입의 참조변수 c 생성

new연산자 : 객체 생성

Car(~)생성자 호출 : iv초기화

=연산자 : 대입

class Car {
	String color;
	String gearType;
	int door;
	
	Car(){}	//기본생성자
	
	Car(String c, String g, int d){	//매개변수 있는 생성자
		color = c;
		gearType = g;
		door = d;		
	}
}

public class Ex6_12 {

	public static void main(String[] args) {
		
		Car c1 = new Car();
		c1.color = "red";
		c1.gearType = "auto";
		c1.door = 2;
		//기본생성자+참조변수
		System.out.println("기본생성자 방식 : "+c1.color+", "+c1.gearType+", "+c1.door);
		
		Car c2 = new Car("white", "manual", 4 );
		//매개변수 있는 생성자
		System.out.println("매개변수 있는 생성자 방식 : "+c2.color+", "+c2.gearType+", "+c2.door);
	}
}


기본생성자 방식 : red, auto, 2
매개변수 있는 생성자 방식 : white, manual, 4


이런 방식도 된다!!

class Car {
	String color;
	String gearType;
	int door;
	
//	Car(){}	//오버로딩이 아닌 중복이기에 쓸 수 없다.
	
//	Car(){	//디폴트값이라는 의미
//		color = "red2";
//		gearType = "auto2";
//		door = 22;
//	}
	
	Car(){	//this를 활용한 기본생성자
		this("red2", "auto2", 22);	//디폴트값이라는 의미
	}
	
	Car(String c, String g, int d){	//매개변수 있는 생성자, 오버로딩!
		color = c;
		gearType = g;
		door = d;		
	}
}

public class Ex6_12 {

	public static void main(String[] args) {
		
		Car c1 = new Car();
		c1.color = "red";
		c1.gearType = "auto";
		c1.door = 2;
		//기본생성자+참조변수
		System.out.println("기본생성자 방식 : "+c1.color+", "+c1.gearType+", "+c1.door);
		
		Car c2 = new Car();
		//기본생성자+참조변수
		System.out.println("기본생성자 방식2 : "+c2.color+", "+c2.gearType+", "+c2.door);
		
		Car c3 = new Car("white", "manual", 4 );
		//매개변수 있는 생성자
		System.out.println("매개변수 있는 생성자 방식 : "+c3.color+", "+c3.gearType+", "+c3.door);
	}
}

기본생성자 방식 : red, auto, 2
기본생성자 방식2 : red2, auto2, 22
매개변수 있는 생성자 방식 : white, manual, 4



Ref

좋은 웹페이지 즐겨찾기