JAVA

자바 상속 기초 1) - 공부하는 도비

DOVISH WISDOM 2022. 4. 2. 17:07  
728x90
반응형

오늘은 상속 기본 개념을 알아보겠습니다.

 

우리가 어떤 프로그램 소스 파일을 가졌고, 그 소스 코드의 기본 동작에다가 추가하고 싶은 기능이 있다고 가정해볼게요.

 

가장 쉬운 방법은 소스 코드 자체를 수정하는 방법입니다. 

하지만, 코드의 수정이 불가능한 경우가 있고.

만약 추가적인 기능을 넣어서 코드를 새로 짜더라도, 다른 사람은 그 기능이 필요 없다고 생각되어 빼버릴 수 도 있습니다. 이때 추가했던 기능의 매개변수라던지 클래스 등이 여전히 남아 있어 오류를 발생시킬 가능성이 커지게 됩니다. 

 

이런 코드의 오류를 줄이기 위해서 나온 개념이 "상속"입니다. 

기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법을 구상하다가 나온 개념이 상속입니다.

즉, 기존의 객체를 수정하지 않으면서 새로운 객체가 기존의 객체를 기반으로 만들어지게 되는 것입니다. 

 

기존의 객체는 기능을 물려준다는 의미에서 부모 객체가 되고, 새로운 객체는 기존 객체의 기능을 물려 받는다는 의미에서 자식 객체가 됩니다.

이러한 부모 클래스와 자식 클래스를 상위(super) 클래스와 하위(sub) 클래스라고 표현하기도 합니다.

 

자바 상속 기초는 굉장히 간단하니 바로 코드를 보면서 설명하겠습니다. 

 

아래 코드는 "더하기, 곱하기, 빼기' 가 가능한 계산기 코드입니다.

 

class Calculator_Test {
	
	int left, right;
	
	public set_number(int left, int right) {
		this.left = left;
		this.right = right;
	}
	
	public void Sum() { System.out.println(this.left + this.right);	}
	
	public void Mul() { System.out.println(this.left * this.right); }
	
	public void Sub() { System.out.println(this.left - this.right); }
}

public class CalculatorTest {
	public static void main(String[] args) {
		
		Calculator_Test ca = new Calculator_Test();
		ca.set_number(10, 20);
        ca.Sum();
        ca.Mul();
        ca.Sub();
	}
}

이제 위의 코드를 수정하지 않고, "더하기, 곱하기, 빼기"가 가능하고, 추가적으로 나누기 연산까지 되는 계산기를 만들어 보겠습니다. 

 

아래 코드는 CalculatorTest_2라는 클래스 명을 가진 코드입니다. 

위의 Calculator_Test의 매개변수와 클래스를 상속받고 있습니다. 

 

상속은 extends라는 명령어를 통해서 할 수 있습니다. 

(상속받을 클래스 명)  extends (상속 대상이 되는 클래스 명)

package Inferitance;

class Calculator_Test_2 extends Calculator_Test {
	
	public void Div()
	{
		System.out.println(this.left / this.right);
	}
	
}
public class CalculatorTest_2 {

	public static void main(String[] args) {
		
		Calculator_Test_2 ct_2 = new Calculator_Test_2();
		
		ct_2.set_number(30, 10);
		
		ct_2.Sum();
		ct_2.Mul();
		ct_2.Sub();
		
		ct_2.Div();
	}

}

 

 

CalculatorTest_2 파일에는 set_number()에 해당하는 함수가 없기 때문에, 자바는 상속 기능으로 Calculator_Test에 있는 set_number()를 호출하게 됩니다.

 

이렇게 해서, CalculatorTest_2의 main에서 Calculator_Test 안에 있는 set_number(), Sum(), Mul(), Sub() 기능을 사용할 수 있게 됩니다.

 

 

이렇게 해서 기존의 코드를 수정하지 않고, 상속을 통해 필요에 따라 더 많은 기능을 추가할 수 있게 됩니다.