JAVA_24_생성자
생성자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
- 매개변수가 없는 생성자
클래스명() {} //기본생성자 클래스명() { // 생성자 // iv 초기화 }
- 매개변수가 있는 생성자
클래스명() {} //기본생성자 클래스명(타입 매개변수명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
Author And Source
이 문제에 관하여(JAVA_24_생성자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lecharl/JAVA24저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)