본문 바로가기
자바

자바 상속

by 복제비 2021. 11. 10.

자바 상속

 

클래스나 인스턴스를 이용하여 한 차원 높은 프로그램을 구성하는 방식에 대해서 알아보겠습니다.

한 클래스가 다른 클래스의 기능들을 모두 포함하는 형태로 클래스를 만들어야 할 때 모두 복사해서 일일이 넣어 준다면 엄청난 시간이 낭비될 것입니다. 

이러한 경우에 상속이라는 기능을 이용하여 코딩하면  중복 작업을 하지 않아도 되니 훨씬 간편하면서도 깔끔한 코딩 상태를 유지할 수 있습니다.

InheritanceTest 클래스 파일을 생성해서 계산 기능을 수행하는 프로그램을 만들어 상속이란 무엇인지 자세하게 알아봅니다. 

 

 

CalTest 라는 클래스에서는 덧셈을 하는 sum 메소드가 있습니다.

 

class CalTest {
public int sum(int f1, int f2) {
return f1 + f2;
 }
}


그리고 CalTest 에 뺄셈이나 곱셈 기능을 추가하기 위해서 CalTest의 sum 메소드를 그대로 복사해서 CalTest2 라는 클래스를 만들었다고 가정하면 어떠한 문제가 발생할 까요?

 

class CalTest2 {
public int sum(int f1, int f2) {
return f1 + f2;
  }

public int mul(int f1, int f2) {     // 추가한 메소드 부분임
return f1 * f2;
 }
}

 

CalTestsum 메소드를 수정한다면, sum 메소드를 복사한 CalTest2의 sum 메소드도 자동으로 수정이 안되어 일일이 찾아서 수정 작업을 해주어야 하는 번거로운 일들이 발생하게 됩니다. 

 

extends 키워드를 이용해서 CalTest 로부터 상속을 받아 CalTest2 클래스생성했다면 수정sum 메소드를 그대로 가져다 쓰기만 하면 되는 것입니다.

 

다음과 같이 sum 메소드를 가진 CalTest 클래스 상속하는 방법은 다음과 같습니다. 

 

class CalTest {
public int sum(int f1, int f2) {
return f1 + f2;
  }
}


class CalTest2 extends CalTest {  // CalTest2 는 CalTest 를 상속 받음

 

}

CalTest2 클래스CalTest 클래스 상속받은 클래스로 아무것도 코딩하지 않아도,
CalTest 에 있는  sum 메소드사용할 수 있습니다.

CalTest2 클래스추가적인 메소드mul 메소드 다음과 같이 코딩합니다. 

 

class CalTest2 extends CalTest {  // CalTest2 는 CalTest 를 상속 받음
public int mul(int f1, int f2) {
return f1 * f2;
  }
}

 

그러므로, CalTest2 클래스상속받은  sum 메소드와 추가로 삽입한 mul 메소드실행할 수 있습니다.

 

 

 

댓글