티스토리 뷰

IT 정보보안/JAVA

2018.6.5

SsOoLl 2018. 6. 5. 16:17

상속관계

상속이란 기존의 클래스를 재사용해서 새로운 클래스를 작성하는것을 뜻한다.

쉽게 얘기하면 두 클래스를 조상과 자손으로 관계를 맺어 주는것이다.

그림1

일단 그전에 상속관계를 사용하게 되면 클래스를 많이 추가해야 된다.

그러므로 새로운 파일을 만들어 두 클래스를 나뉘어 보관하면 좋은데 이때 새로운 파일에다 두개의 패키지를 만들어

그림 1처럼 하나는 조상클래스를, 다른 하나는 자손클래스를 만들면 되고 필자의 경우에는 이름, 나이, 전공등을 출력하기 위해서 간단하게 세팅을 하였다.

그림2

ClassEx_01 같은경우는 출력을 하기 위해 입력값등을 입력 할 것이고 나머지 Student와 Person같은 경우는 ClassEx_01에 출력 되어야 할 값들을 적어서 타 클래스에 있어도 한클래스에 동일하게 출력 되는 것을 보여줄것이다.

그림3

 

그림3은 아직까진 상속과 관련이 없고 단순히 상위 클래스의 변수를 타 클래스에서 끌어 쓰는 것인데

여기서 가장 중요한건 애초에 클래스 자체가 다르고 패키지 또한 다르기 때문에 일반적인 방법으로는 Person이라는 클래스를 호출하지 못해 에러가 뜰것이다.

이럴때는 그림3의 상단에 보면 import라는 명령어가 있는데 이것을 이용하면 패키지가 달라도, 클래스가 달라도 문제없이 하위클래스의 입력값을 상위 클래스로 뽑아 출력이 가능하다.

그러므로 현재 필자의 메인 패키지와 클래스의 패키지의 이름은 Koreais이니 import com.koreais.cls; 를 입력하면 된다.

만약 클래스가 하나가 아니라고 하면 import com.koreais.cls; 의 맨뒤에 ' * ' 를 추가하면 하나의 패키지의 클래스가 아닌 여러 개에서 나오는 입력값들을 상위 클래스를 통해 출력이 가능해 진다.

그림4-1

그림4-2

그림4-1는 그림3에서 보이는 ClassEx_01이라는 상위클래스에 있는 name변수와 age변수를 지정 해두었던 값을 Person이라는 클래스에서 볼 수있다.

아까도 얘기했지만 최상위 클래스에서 import라는 명령어를 사용하여 상위클래스로 자료 값을 넘길 수있을 수 있으니 이점을 가장 유의하여야 한다.

그림5

그림5는 본격적으로 상속이라는 개념을 사용해본 입력양식이다.

상속에서 필수적으로 사용되는 명령어는 extends라는 명령어이다.

그림6-1

그림6-1을 보게되면 메인메서드안에 extends라는 명령어를 볼 수있다.

이 명령어는 상속에 있어 꼭 필요한 명령어이며 그림6에서 보듯이 public class옆에 입력을 하면 된다.

그림6-1에서 보면 extends 뒤에 Person이라는 클래스가 있는데 이것은 Student라는 클래스와 Person이라는

클래스를 같이 상속을 시켜 사용하기 위함이다.

일단 상속을 받게되면 상위클래스에 상속받은 모든 멤버속성과 메서드를 물려받았기 때문에 따로 코딩이 필요 하지않다.

그리고 위에서 얘기했듯이 Person이라는 클래스를 Student라는 상위클래스와 결합해서 최상위 클래스에 출력한다고 하였는데

자바는 단일상속으로 상속을 받는 클래스는 하나의 클래스에서만 상속을 받을 수 있지만

최상위 클래스는 여러개의 클래스에 상속이 가능하다.
그림6-2

그림6-2는 Student의 상위클래스와 Person이라는 하위클래스를 결합하여 최상위클래스인 ClassEx_01을 이용하여 출력해보았던 값이다.

여기서 한가지 주의 할점은 Student클래스가 Person클래스를 상속을 받게되면 이 두클래스간의 관계가 형성이 되는데

이 관계는 매우 일방적인 관계라 상속받은 Student클래스는 Person클래스가 변경이 있으면 변경이 된게 그대로 영향이 있찌만

Person클래스는 누가 상속을 받던 말던 전혀 상관이 없고 Person클래스 그 자체가 된다.

'IT 정보보안 > JAVA' 카테고리의 다른 글

2018.6.12  (1) 2018.06.12
2018.6.4  (0) 2018.06.04
2018.5.31  (0) 2018.05.31
2018.5.30  (0) 2018.05.30
2018.5.29  (0) 2018.05.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함