[JAVA]

[JAVA]9월 16일 생성자

jsm9301 2015. 9. 16. 17:44
·생성자(contructor): 객체가 생성될 때에 필드에게 초기값을 제공하고 필요한 초기화 절차를 실행하는 메소드

                       : 생성자도 메소드니까 오버로딩이 가능.

                     : 일반적으로 수식어가 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]