본문 바로가기

Java프로그래밍

객체기반SW설계 24차시: 상속의 구현

반응형
SMALL


상속 (Inheritance)의 구현

상속은 객체기반 프로그래밍을 아주 쉽게 해주는 즐거운 도구이다.
쉽게 한마디로 설명하자면,
새로운 클래스를 만들 때, 기존 클래스를 확장시켜서 만드는 것이다.
예를 들어,
학교에 본관건물이 하나만 있었다고 하자. 
확장하기 위해서 강당을 하나 지으면,
이제 학교는 본관+강당이 되는 것이다.
상속도 유사한 원리로 진행된다.

class Point

이 클래스는 2차원 공간 위의 점을 하나 나타낸다고 하자.
멤버변수 x, y는 좌표 (x,y)를 나타내고,
멤버메소드 showPoint( )는 좌표 (x,y)를 출력한다. 
public class Point
{
   int x;
   int y;
   public void showPoint()
   {
      System.out.println(x+","+y);
   }
}

이제 점을 나타내는 새로운 클래스를 만들고자 한다.
좌표값 외에도, 점의 색깔에 대한 정보도 넣고 싶다.
이 경우, class Point를 확장해서 만들면 아주 쉽다.
추가로 점의 색깔에 대한 정보, 그리고 색깔을 가지고 동작하는 메소드만 
만들면 되는 것이다.

우선, 새로 만드는 클래스 이름을 ColorPoint라고 하고,
class Point를 확장해서 만들어보자.
이를 Java언어로 구현하면 다음과 같다.
public class ColorPoint extends Point
{
   .......
}
'extends'는 Java언어의 예약어이다.
class Point를 확장해서, ColorPoint를 만든다는 의미이다.

상속: 이것은 확장과 동일한 의미이다.
위에서 class Point를 확장해서 (extends) ColorPoint를 만드는 것은,
결국,  Point의 멤버 변수와 메소드들을 모두 상속받아서
사용하겠다는 것과 같은 뜻이다.

class ColorPoint 

이것은 class Point를 확장(상속)했기 때문에,
기본적으로 멤버 변수 x, y 그리고 멤버 메소드 showPoint( )를 
가지고 있다.
이를 그림으로 표현하자면 다음과 같다.


추가 멤버변수와 메소드


class ColorPoint에 점 색깔에 대한 정보를 넣는 것은
아래와 같다.

public class ColorPoint extends Point
{
   public String colorName;
   public void showColor()
   {
      System.out.println("The color of the point is "+colorName);
   }
}
위의 코드에서는
점색깔을 String 타입의 멤버변수 colorName으로,
그리고 메소드로 그 색깔을 출력하는 showColor()를 추가하였다.

class ColorPoint의 객체 생성과 사용

상속받아 만든 클래스로부터 객체를 생성하는 것은
이전과 다름이 없다.
대신 신기한 것은 직접 정의하지 않은 멤버변수와 메소드들을
마치 자기 것인야 쓸 수 있다는 것이다.
ColorPoint cp = new ColorPoint();

cp.x = 10;
cp.y = 20;
cp.showPoint();

cp.colorName = "Red";
cp.showColor();

위의 코드에서 볼 수 있듯이
멤버 변수 x와 y, 메소드 showPoint( )는 ColorPoint가 정의하지는 않았지만,
상속받았기에 마치 자기 것 처럼 쓰고 있다.

위의 내용을 동영상에서 자세히 설명하고 있습니다. 


반응형
LIST