본문 바로가기
IT/JAVA

[Java]Override 2

by 행복한 용용이 2020. 7. 21.
반응형
상 위 자동차 차이름 색상 제조사 속도
감속( ) 감속 ( ) 정지( )  
하 위 택시(Taxi) 버스(Bus) 트럭(Truck)
요금(price) 승객수(pcount) 중량(weight)
    총중량(maxWeight)
----------------------------------------------------------------------------------------------------
요금계산( ) 타다 ( ) 상차 ( )
calcPrice(int km) getOn(int pcount) loadUp(int weight)
  내리다( ) 하차 ( )
  getOut(int pcount) loadDown(int weight)

 


50으로 달릴 때의 speed

speed가 150이 넘으면 속도를 제한하고 싶다.

 

Taxi)

TaxiGuest)


Object의 method를 쓸 수 있다.

Car 클래스에서 info 메소드를 고치고 싶음.

//에러남. 상위 Object 랑 overriding을 하고 싶은데 Object의 메소드는 public인데 왜 넌 아니냐! 더 넓은거로만가능

override할때는 위에 @Override를 써주는 것이 좋음. 또한 메소드 이름을 꼭 맞춰야함.

 

이제 t1.info()이렇게 하지 않고 그냥 t1해도 됨.

택시라고도 만들고 싶음

Taxi에서 또 오버라이딩

toString에 택시만 덫붙임

결과 :


TaxiGuest에 t3을 만든다.

>>다른 차로 나옴.

비교연산자 ==는 값을 비교한다. 내용이 같을 뿐 값이 같지는 않다.

Object의 hashcode() 메소드를 써서 값을 비교해본다.

//==비교연산자 는 기본DT(숫자,문자 등)일 경우에 값을 비교하지만 참조형DT(object)일 경우는 주소값 비

따라서 t2와 t3은 주소값이 다른 차이다.

근데 차 이름이 같으면 같게 하고 싶다면?

Object method 중 equals 사용

>아직도 다른차라고 나온다.

Object의 equals도 주소값 비교하기 때문.

Car에서 Object의 equals를 Car에게 맞게 형변환해야한다.

결과 ) 차이름이 같다고 나온다.

Object 비교는 ==보다 equal를 하는 것이 좋다.

 

[출처] 빡쏘끼룩

반응형