package ch06;

import ch05.sub.*;

public class ColorCar extends Car
{
 /*
  * 메서드 오버라이딩 : 오버로딩과 다르다
  * 계승에서 상위클래스의 멤버함수의 이름,인자의 수까지
  * 완벽히 똑같은 이름을 하위클래스에서 구현할 경우
  * 상위클래스의 멤버함수는 은닉화되어 힘을 읽어버리며,
  * 하위클래스의 멤버함수가 그 함수를 대신하게 된다.
  * (상위클래스의 멤버함수의 재정의)
  * */
 
 public ColorCar()
 {
  // TODO 자동 생성된 생성자 스텁
  //super();
 }
 
 //아래의 print는 상위클래스의 print와 이름은 같지만,
 //인자의 수가 다르므로 멤버함수의 오버로딩에 해당.
 public void print(String message)
 {
  System.out.println(message);
 }
 
 //상위클래스의 print메서드의 오버라이딩
 public void print()
 {
  // TODO 자동 생성된 메소드 스텁
  //super는 상위클래스를 가르키는 지시어이다.
  //따라서 아래와 같이 super.print()를 지정하면,
  //상위 클ㄹ래스의 print()가 호출된다.
  //super는 보통 지금처럼 오버라이딩시
  //하위에서 상위클래스의 오버라이딩된 원본 메서드를 호출할때 사용.
  super.print();
  System.out.println("Hello Color Car()");
 }
 
 public static void main(String[] args)
 {
  ColorCar colorCar = new ColorCar();
  colorCar.print("aa");
  colorCar.print();  
 }
}

사용자 삽입 이미지

Posted by 말없제이
,