상속 (클래스 상속)/ @Override

2022. 8. 30. 17:18Java 프로그램

728x90

클래스 라는 개념에서는 상속이라는 개념이 존재합니다.

자식(하위,파생) 클래스가 부모클래스(상위) 의 멤버를 물려받는 것을 뜻합니다. 여기서 말하는 멤버는 필드와 메소드를 뜻합니다. 즉, 부모 클래스에서 age와 name이라는 필드가 있고 add() 라는 메소드가 있다면 자식클래스가 부모클래스를 상속 받았다면 자식은 부모가 가진 필드와 메소드를 그대로 물려 받고 필요한 코드만 추가하여 코드의 재활용성을 살릴수 있습니다.

 

[부모클래스] 

class Point {
	private int x;
    private int y;
    
    public void set(int x, int y){
    	this.x = x;
    	this.y = y;
    }
    
    public void showPoint(){
    //점의 좌표 출력
    System.out.println("(" + x + "," + y + ")");
    }
    
    }

[자식클래스]

// Point클래스의 자식클래스
class ColorPoint extends Point{
	private String color; 
    
    public void setColor(String color){
    this.color = color;
    }
    
    public void showColorPoint(){
    System.out.print(color);
    showPoint();		//부모클래스인 Point의 메소드인 showPoint() 호출( 상속받은것)
     }
    }

[실행]

public class ColorPointEx{
	public static void main(String[] args){
    Point p = new Point();		//Point 객체 생성
    p.set(1,2);					//Point클래스의 set()메소드 호출
    p.showPoint();
    
    ColorPoint cp = new ColorPoint();		//ColorPoint의 setColor()호출
    cp.set(3,4);							//상속받은 Point클래스의 set() 호출
    cp.setColor("red");						// 자식클래스의 setColor()호출
    cp.showColorPoint();					// 컬러와 좌표 출력
    
    
    
    결과:
    (1,2)
    red(3,4)

위 코드들을 잘 살펴보면 부모인 Point 클래스의 필드 및 메소드를 자식클래스에서 따로 선언을 하지않아도 자동으로 상속받아 사용이 가능하다는 점을 알 수 있습니다. 이것이 부모클래스의 멤버를 상속받는 자식클래스의 예라고 할 수 있습니다.

 

 

[@Override] : 메소드의 재정의

오버라이드는 부모클래스의 상속 메소드를 자식 클래스에서 새롭게 재정의 하는 것임을 명시적으로 표시하는 것입니다.

오버라이드하는 메소드는 부모 클래스의 메소드와 같은 이름을 가지고 있어야 합니다.

이 메소드 재정의를 하게 되면 부모의 메소드는 숨겨지고 실행할 때 재정의한 자식클래스의 메소드만 실행이 되는데 만약 부모의 메소드가 필요하다면 앞에 super.메소드명 의 형식으로 실행 하면 됩니다.

 

다음은 다형성으로 이어서 작성하겠습니다.

반응형

'Java 프로그램' 카테고리의 다른 글

인터페이스(interface)  (0) 2022.08.30
클래스 상속- 다형성  (0) 2022.08.30
Class(클래스)  (0) 2022.08.30
메소드  (0) 2022.08.24
향상된 for문  (0) 2022.08.23