The Debugging Chronicles : "코드의 미학"

예제로 알아보는 클래스02 본문

JAVA/자바 수업 내용

예제로 알아보는 클래스02

sweetseonah1004 2024. 7. 2. 12:07

 

 

 

생성자의 오버로딩
함수의 오버로딩
그리고
this() 함수

 

 

 


예제

1. 현재속도는 반드시 0으로 시작
2. 최고속도를 지정해주지않으면 기본값 120
3. 차주이름은 등록하지않으면 "무명"으로 저장됨
4. speedUp() -> 속도 50 증가
5. speedDown() -> 속도 100 감소
+) speedUp(값) -> 해당 값 만큼 속도가 증가

 

>>>생각해보기

- 현재속도는 반드시 0으로 시작

- 최고속도를 지정해주지않으면 기본값 120
- 차주이름은 등록하지않으면 "무명"으로 저장됨

 - 생성자 함수의 가능한 모든 조건 생각해보기

     1. 이름이 없으면 "무명"

     2. 이름이 있고 최고 속도가 지정되지 않을 때

     3. 이름이 없고 최고 속도가 지정되어 있을 때

     4. 이름이 있고 최고 속도가 지정되어 있을 때

 

따라서, 

   Car(){
      this("무명",120);
   }
   Car(String name){
      this(name,120);
   }
   Car(int maxSpeed){
      this("무명",maxSpeed);
   }
   Car(String name,int maxSpeed){
      this.name=name;
      this.speed=0;
      this.maxSpeed=maxSpeed;
   }

 

>>>생각해보기

- 현재속도는 반드시 0으로 시작

static int speed = 0 ; //???????

 

- 반드시는  Static 인가?

     세상 모든 차에서 공유되는 차의 속성 이어야 static이 가능하다.

     예를 들어 반지름과 같이 언제나 변함 없이 반지름은 PI로 3.14라는 값이 공유 될 때  static을 사용한다. 

 

 

정답

package class04;

class Car { 
   String name;
   int speed; // 현재속도
   int maxSpeed; // 최고속도
   Car(){
      this("무명",120);
   }
   Car(String name){
      this(name,120);
   }
   Car(int maxSpeed){
      this("무명",maxSpeed);
   }
   Car(String name,int maxSpeed){
      this.name=name;
      this.speed=0;
      this.maxSpeed=maxSpeed;
   }
   void speedUp() {
      this.speed+=50;
      if(this.speed>this.maxSpeed) {
         this.speed=this.maxSpeed;
      }
   }
   void speedUp(int speed) {
      this.speed+=speed;
      if(this.speed>this.maxSpeed) {
         this.speed=this.maxSpeed;
      }
   }
   void speedDown() {
      this.speed-=100;
      if(this.speed<0) {
         this.speed=0;
      }
   }
}