생성자(constructor)
자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는
메소드를 제공한다.
생성자 이름 = 클래스 이름
Car 클래스의 생성자 이름 => Car
생성자의 특징
1.생성자는 반환값이 없지만, 반환타입을 void형으로 선언하지 않는다.
2.생성자는 초기화를 위한 데이터를 인수로 받을 수 있다.
3.객체를 초기화하는 방법이 여러개 있을 때는 하나의 클래스가 여러개의 생성자를 가질 수 있다.(매개변수가 여러 개 일때),메소드 오버로딩이 가능하다.
ex)
Car(String modelName) {}
Car(String modelName, int modelYear) {}
Car(String modelName, int modelYear, String color) {}
Car(String modelName, int modelYear, String color, int maxSpeeds) {}
생성자 선언 문법
1. 클래스이름(){} // 매개변수가 없는 생성자 선언
2. 클래스 이름(인수1, 인수2...){} // 매개변수가 있는 생성자 선언
Car 클래스의 생성자 선언
Car(String modelName, int modelYear, String color, int maxSpeeds) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.maxSpeed = maxSpeed;
this.currentSpeed = 0;
}
생성자의 호출
class Car {
private String modelName;
private int modelYear;
private String color;
private int maxSpeed;
private int currentSpeed;
Car(String modelName, int modelYear, String color, int maxSpeed) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.maxSpeed = maxSpeed;
this.currentSpeed = 0;
}
public String getModel() {
return this.modelYear + "년식 " + this.modelName + " " + this.color;
}
}
public class Method02 {
public static void main(String[] args) {
Car myCar = new Car("아반떼", 2016, "흰색", 200); // 생성자의 호출
System.out.println(myCar.getModel()); // 생성자에 의해 초기화되었는지를 확인함.
}
}
new 키워드를 이용하여 객체를 생성할 때 자동적으로 생성자를 호출한다.
기본생성자
문법
클래스이름(){} =>매개변수형이 없는 생성자를 기본 생성자라고 하며, 자바 클래스 내에서 생성자를 선언하지 않는다면, 기본 생성자가 내재되어 있다.
기본생성자의 호출
class Car {
private String modelName = "소나타";
private int modelYear = 2016;
private String color = "파란색";
public String getModel() {
return this.modelYear + "년식 " + this.color + " " + this.modelName;
}
}
public class Method03 {
public static void main(String[] args) {
Car myCar = new Car(); // 기본 생성자의 호출
System.out.println(myCar.getModel()); // 2016년식 파란색 소나타
}
}
참고자료
http://www.tcpschool.com/java/java_methodConstructor_constructor
'Java > Java Concept' 카테고리의 다른 글
메소드 오버로딩 (1) | 2022.07.04 |
---|---|
this와 this() (1) | 2022.07.04 |
메소드 개념 (0) | 2022.07.04 |
클래스 선언 (1) | 2022.07.04 |
Java 클래스 개념 (1) | 2022.06.17 |