public class Car {
// Field (company, model, color, maxSpeed, minSpeed 가 field name)
String company = "현대자동차";
String model;
String color;
int maxSpeed;
int minSpeed;
// 생성자
Car(){
}
Car(String model){
this.model = model;
}
Car(String model, String color){
this.model = model;
this.color = color;
}
Car(String model, String color, int maxSpeed, int minSpeed){
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
this.minSpeed = minSpeed;
}
// 메소드 선언
// return 값이 없는 메소드
void carPrint() {
System.out.println("company: " + this.company);
System.out.println("model: " + this.model);
System.out.println("color: "+ this.color);
System.out.println("maxSpeed: " + this.maxSpeed);
System.out.println("minSpeed: " + this.minSpeed);
}
// return 값이 있는 메소드
int increase_maxSpeed(int x) {
this.maxSpeed = this.maxSpeed + x;
return this.maxSpeed;
}
int reduce_maxSpeed(int x) {
this.maxSpeed = this.maxSpeed - x;
return this.maxSpeed;
}
// 메소드 오버로딩 Overloading
// 만약 아래의 예처럼 change_Speed에 입력으로 1개 정수형 할 경우 maxSpeed만 변경
// 하지만 2개의 입력이 있을시 max, min 모두 변경
int change_Speed(int x) {
this.maxSpeed = x;
return this.maxSpeed;
}
void change_Speed(int x, int y) {
this.maxSpeed = x;
this.minSpeed = y;
}
}
public class CarExample {
public static void main(String[] args) {
// Car.java에서 정의한 Car Class를 통해 객체 생성
System.out.println("Car Class의 생성자를 사용해 객체 생성\n");
Car car1 = new Car();
System.out.println("\ncar1.company : " + car1.company);
Car car2 = new Car("자가용");
System.out.println("\ncar2.company : " + car2.company);
System.out.println("car2.model : " + car2.model);
Car car3 = new Car("자가용", "빨강");
System.out.println("\ncar3.company : " + car3.company);
System.out.println("car3.model : " + car3.model);
System.out.println("car3.color : " + car3.color);
Car car4 = new Car("자가용", "빨강", 200, 0);
System.out.println("\ncar4.company : " + car4.company);
System.out.println("car4.model : " + car4.model);
System.out.println("car4.color : " + car4.color);
System.out.println("car4.maxSpeed : " + car4.maxSpeed);
System.out.println("car4.minSpeed : " + car4.minSpeed);
// Car.java에서 정의한 메소드 호출
System.out.println("\n\nCar Class에 선언된 메소드 호출\n");
car4.carPrint();
System.out.println("\nmaxSpeed가 " + car4.increase_maxSpeed(10) + "로 증가");
car4.carPrint();
System.out.println("\nmaxSpeed가 " + car4.reduce_maxSpeed(10) + "로 감소");
car4.carPrint();
// 오버로딩 사용
System.out.println("\nmaxSpeed가 " + car4.change_Speed(150) + "으로 변경");
car4.carPrint();
System.out.println("\nmaxSpeed를 300으로 minSpeed를 100으로 변경");
car4.change_Speed(300, 100);
car4.carPrint();
}
}
Car Class의 생성자를 사용해 객체 생성
car1.company : 현대자동차
car2.company : 현대자동차
car2.model : 자가용
car3.company : 현대자동차
car3.model : 자가용
car3.color : 빨강
car4.company : 현대자동차
car4.model : 자가용
car4.color : 빨강
car4.maxSpeed : 200
car4.minSpeed : 0
Car Class에 선언된 메소드 호출
company: 현대자동차
model: 자가용
color: 빨강
maxSpeed: 200
minSpeed: 0
maxSpeed가 210로 증가
company: 현대자동차
model: 자가용
color: 빨강
maxSpeed: 210
minSpeed: 0
maxSpeed가 200로 감소
company: 현대자동차
model: 자가용
color: 빨강
maxSpeed: 200
minSpeed: 0
maxSpeed가 150으로 변경
company: 현대자동차
model: 자가용
color: 빨강
maxSpeed: 150
minSpeed: 0
maxSpeed를 300으로 minSpeed를 100으로 변경
company: 현대자동차
model: 자가용
color: 빨강
maxSpeed: 300
minSpeed: 100