[JAVA]9월 16일 생성자
: 생성자도 메소드니까 오버로딩이 가능.
: 일반적으로 수식어가 public.
: 함수명이 클래스 명과 동일.
: 반환유형 자체가 없음.
: 객체가 생성될때 한번 호출되는 메소드.
public class Car {
private String color;
private int speed;
private int mileage;
public Car(){ //<< 기본생성자
//필요한 초기화 절차를 수행
System.out.println("자동차가 만들어집니다.");
//필드에 초기값 지정
color = "blue";
//얘가 없어도 new Car()는 가능함
//우리가 생성자를 하나도 만들지 않으면 컴파일러가 public Car(){} 자동생성.
//몸통이 비어 있는 기본 생성자를 만들어줌.
//몸통이 아예 비어 있는 생성자를 호출시에는 String 타입은 null
//int 타입은 0 으로 나온다.
}
public Car(String c){
//매개변수를 하나 가지는 생성자.
//메인 함수에서 new Car(c) 객체를 만들때 c에다 넣어준 값을 color에 넣어준다.
System.out.println("매개변수 하나인 생성자 호출~");
this.color = c;
}
public Car(String c, int s, int m){
//매개변수를 3개 가지는 생성자.
//마찬가지로 메인함수에서 객체를 만들때 넣어준 값에 따라 상태값을 가지게 된다.
System.out.println("매개변수 3개인 생성자 호출~");
color = c;
speed = s;
mileage = m;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getMileage() {
return mileage;
}
public void setMileage(int mileage) {
this.mileage = mileage;
}
@Override
public String toString() {
return "Car [color=" + color + ", speed=" + speed + ", mileage=" + mileage + "]";
}
}
public class Test {
public static void main(String[] args) {
Car car = new Car(); // 이 객체 생성시
System.out.println(car); // 기본생성자니까
}
}
결과값
자동차가 만들어집니다.
Car [color=blue, speed=0, mileage=0] //기본생성자에서 초기값을 'blue'로 지정해주었기 때문에..
public class Test {
public static void main(String[] args) {
Car car = new Car("red"); //매개 변수를 하나 가지는 생성자.
System.out.println(car); // color 에다 red를 넣어줬다.
}
}
결과값
매개변수 하나인 생성자 호출~
Car [color=red, speed=0, mileage=0]
public class Test {
public static void main(String[] args) {
Car car = new Car("red",100,50000); //매개 변수를 3개 가지는 생성자
System.out.println(car); // color 에다 red, speed에 100, mileage에 50000
}
}
결과값
매개변수 3개인 생성자 호출~
Car [color=red, speed=100, mileage=50000]