코딩항해기
[실습/JAVA] Car class로 오버로딩 연습 (+풀이 0702) 본문
오버로딩, this() 연습
[실습]
class Car
- String name
- int speed
- int maxSpeed
요구사항
- 현재 속도는 반드시 0으로 시작
- 최고 속도를 지정해주지 않으면 기본값 120
- 차주 이름은 등록하지 않으면 “무명”으로 저장됨
- speedUp() → 속도 50증가
- speedDown() → 속도 100 감소
+) speedUp(값) → 해당 값만큼 속도 증가
[코드 - 실습]
package class02;
class Car {
//필드
String name;
int speed;
int maxSpeed;
//생성자
Car() {
this("무명",120);
}
Car(int maxSpeed){
this("무명", maxSpeed);
}
Car(String name){
this(name, 120);
}
Car(String name, int maxSpeed) {
this.name = name;
this.speed = 0;
this.maxSpeed = maxSpeed;
System.out.println("["+this.name+"]");
}
//메소드
void speedUp() {
speedUp(50);
}
void speedUp(int num) {
System.out.println("속도가 "+num+"만큼 올라갑니다.");
this.speed+=num;
checkSpeed();
}
void speedDown() {
System.out.println("속도가 내려갑니다.");
this.speed-=100;
checkSpeed();
}
void checkSpeed() {
if(this.speed > this.maxSpeed) {
System.out.println("최고 속도 도달");
this.speed=this.maxSpeed;
}
else if(this.speed < 0) {
System.out.println("속도가 완전히 내려가 정지합니다.");
this.speed=0;
}
System.out.println("speed : "+this.speed);
}
}
public class Test02 {
public static void main(String[] args) {
Car c1 = new Car();
c1.speedUp();
c1.speedUp(555);
c1.speedDown();
System.out.println();
Car c2 = new Car(300);
c2.speedUp();
c2.speedUp(444);
c2.speedDown();
System.out.println();
Car c3 = new Car("자동차");
c3.speedUp();
c3.speedUp(333);
c3.speedDown();
System.out.println();
Car c4 = new Car("자동차", 200);
c4.speedUp();
c4.speedUp(2);
c4.speedDown();
}
}
[풀이 후 보완할 점]
순서는 필드 > 생성자 > 메서드 순으로 작성하는 경우가 많다.
void speedUp() {
speedUp(50);
}
void speedUp(int num) {
System.out.println("속도가 "+num+"만큼 올라갑니다.");
this.speed+=num;
checkSpeed();
}
이 부분에서 코드가 겹쳐 speedUp()메소드를 호출하였는데 이런 경우는 잘 없다고 한다.
지금 실습 문제가 너무 간단해서 겹쳤기 때문에 사용 가능하지만 (안되는 건 아님!)
복잡해지면 이런 경우도 잘 없고, 오버로딩한 이유는 세세하게 다루기 위해서이기 때문에 코드가 다소 겹쳐도 좋다.
필드값 사용할 때는 this붙여서 구분시켜주는 걸 잊지않기!
'problem solving > 과제&실습 코딩' 카테고리의 다른 글
[실습/JAVA] 모양을 상속받는 원과 사각형 (+풀이 0703) (0) | 2024.07.03 |
---|---|
[과제/JAVA] 학생부 프로그램에 객체 더하기 (+풀이 0703) (1) | 2024.07.02 |
[실습/JAVA] 학생으로 클래스 연습하기 (+풀이 0701) (0) | 2024.07.01 |
[과제/JAVA] 학생부 프로그램 함수화 (+풀이 0701) (1) | 2024.06.30 |
[과제/코드업/JAVA] 1362 : 숫자 피라미드 3 (0) | 2024.06.29 |