객체가 생성될 때 호출되며
객체를 초기화하는 역할
을 수행함
public Car() {} // 선언
...
Car car = new Car(); // 호출
// 오버로딩 : 똑같은 메서드명을 사용하면서 매개변수의 종류에 따라 다른 기능을 수행하게 하는 것
// (1)
public Car(String modelName) {
model = modelName;
System.out.println("첫 번째 생성자가 호출되었습니다.");
}
// (2)
public Car(String modelName, String colorName) {
model = modelName;
color = colorName;
System.out.println("두 번째 생성자가 호출되었습니다.");
}
// (3)
public Car(String modelName, String colorName, double priceValue) {
model = modelName;
color = colorName;
price = priceValue;
System.out.println("세 번째 생성자가 호출되었습니다.");
}
...
// GV60 모델만 기본으로 선택
Car car2 = new Car("GV60");
System.out.println("car2.model = " + car2.model + "\n");
// GV70 모델, 색상 Blue 만 기본으로 선택
Car car3 = new Car("GV70", "Blue");
System.out.println("car3.model = " + car3.model);
System.out.println("car3.color = " + car3.color + "\n");
// GV80 모델, 색상 Black, 가격 50000000 으로 완전하게 고정된 경우
Car car4 = new Car("GV80", "Black", 50000000);
System.out.println("car4.model = " + car4.model);
System.out.println("car4.color = " + car4.color);
System.out.println("car4.price = " + car4.price + "\n");
//
첫 번째 생성자가 호출되었습니다.
car2.model = GV60
두 번째 생성자가 호출되었습니다.
car3.model = GV70
car3.color = Blue
세 번째 생성자가 호출되었습니다.
car4.model = GV80
car4.color = Black
car4.price = 5.0E7
// (1)
public Car(String model) {
this(model, "Blue", 50000000);
}
// (2)
public Car(String model, String color) {
this(model, color, 100000000);
}
// (3)
public Car(String model, String color, double price) {
this.model = model;
this.color = color;
this.price = price;
}
// 리턴타입이 인스턴스 자신의 클래스 타입일 때
Car returnInstance() {
return this;
}
...
// 모델을 변경하면서 만들 수 있고 색상 : Blue, 가격 50000000 고정
Car car1 = new Car("GV60");
System.out.println("car1.model = " + car1.model);
System.out.println("car1.color = " + car1.color);
System.out.println("car1.price = " + car1.price + "\n");
// 모델, 색상을 변경하면서 만들 수 있고 가격 100000000 고정
Car car2 = new Car("GV70", "Red");
System.out.println("car2.model = " + car2.model);
System.out.println("car2.color = " + car2.color);
System.out.println("car2.price = " + car2.price + "\n");
// GV80 모델, 색상 Black, 가격 120000000 으로 완전하게 고정된 경우
Car car3 = new Car("GV80", "Black", 120000000);
System.out.println("car3.model = " + car3.model);
System.out.println("car3.color = " + car3.color);
System.out.println("car3.price = " + car3.price + "\n");
// this 키워드를 통해 car3 인스턴스 자신을 반환 : car3.returnInstance() = 인스턴스의 주소
System.out.println(car3.returnInstance().model); // car3의 model
System.out.println(car3.returnInstance().color); // car3의 color
System.out.println(car3.returnInstance().price); // car3의 price
//
car1.model = GV60
car1.color = Blue
car1.price = 5.0E7
car2.model = GV70
car2.color = Red
car2.price = 1.0E8
car3.model = GV80
car3.color = Black
car3.price = 1.2E8
GV80
Black
1.2E8
public
: 접근 제한이 전혀 없음protected
: 같은 패키지 내, 다른 패키지의 자손클래스에서 접근 가능(default)
: 같은 패키지 내에서만 접근 가능private
: 같은 클래스 내에서만 접근 가능static
, final
, abstract
( package )
package 상위패키지.하위패키지;
import week03.packageExample.pk1.Car;
public class Main {
public static void main(String[] args) {
Car car = new Car();
car.horn();
}
}
extends
키워드 사용public class 자식클래스 extends 부모클래스 {
...
}
~은 ~이다
~은 ~을 가지고 있다