티스토리 뷰

상속성은 객체지향 프로그래밍에서 이미 정의된 상위 클래스 (부모 클래스)의 모든 속성과 연산을 하위 클래스가 상속받는 것을 의미한다.

속성과 연산 등을 물려주는 클래스를 상위 클래스 또는 슈퍼 클래스(super class), 물려 받는 클래스를 하위 클래스 또는 서브 클래스 (sub class)라고 한다.

 

이미 만들어 놓은 클래스의 속성과 연산을 하위 클래스가 그대로 공유할 수 있기 때문에 객체와 클래스의 재사용이 가능하다. 그래서, 소프트웨어의 재사용 가능성을 높이는 아주 중요한 개념이다.

 

또한 상속은 확장의 개념도 갖고있다. 

그래서 상위 클래스의 모든 것을 상속받고 오버 라이딩을 하여 그 이외에 다른 것도 갖는 클래스를 구성하는 것이 가능하다.

 

상속에는 단일 상속과 다중 상속이 있다.

단일 상속(single inheritance)은 하나의 클래스로부터 상속을 받는 것이다.

다중 상속(multiple inheritance)은 두 개 이상의 클래스로부터 상속을 받는 것이 가능하다.

 

C++ 같은 언어는 다중 상속이 가능하다. 그러나 다중 상속으로 인하여 코드가 복잡해질 수 있다는 단점이 있다.

java는 단일 상속만 가능하기 때문에 다중 상속에서 발생하는 문제를 겪지 않아도 된다.

 

아래는 상속에 관한 간단한 예제 코드이다. 

class Area {

	int width;
    int height;
    
    public Area(int whidth, int height) {
    	this.width;
        this.height;
    }

	public int getArea( ){
    	return width*height;
    }
}

class Volume extends Area {
	
    private int nopi;
    
    public Volume(int whidth, int height, int nopi){
    	super(width, height);
        this.nopi=nopi;
    }

	public int getArea( ) {
    	return super.getArea( )*nopi;
    }
}

예제 코드

1행에서 14행까지가 넓이를 구하는 부모 클래스 Area이다.

16행에서 Volume 클래스가 extends 를 사용하여 Area 클래스를 상속하고 있다.

 

7행과 8행의 this 는 현재 클래스에 있는 변수를 사용한다는 의미이다.

25행에서 부모 클래스에서 상속받은 메서드를 새롭게 재정의하여 오버 라이딩하고 있다.