티스토리 뷰
이번에 설명할 내용은 상속입니다. 지난 번 Javascript의 prototype(프로토타입)을 설명할 때 상속이 왜 중요한가에 대해서 상세히 작성했지만, 안보실 분들이 많을 거라 생각해서 다시 한번 적어봅니다.
만약에 우리가 코딩으로 계산기를 만든다고 가정해봅시다. 어떤 계산기든지 간에 기본적으로 더하기, 빼기, 곱하기, 나누기는 포함되어 있을 것입니다. 여기서 계산기를 만들어 달라고 하는 구매자의 의도에 따라 제곱근을 구하는 기능이 추가 된다든가 아니면 로그 값을 구하는 기능이 추가 된다든가 할 것입니다. 그런데, 여기서 기본적으로 사용되는 더하기, 빼기, 곱하기, 나누기 개념을 계산기 하나를 만들때마다 계속 새롭게 만들기에는 너무 번거롭습니다. 따라서, 기본 기능으로 설정해놓고 용도에 따라 기능을 추가하는 것이 여러모로 현명한 방법일 것입니다.
이를 재활용성이라고 하는데, 상속은 코딩의 재활용성을 높여주는 개념입니다. 그러면 자바에서 상속을 하는 법을 알아보겠습니다. 자바에서 상속을 사용하는 법은 javascript에 비해서 훨씬 쉽습니다. class명 뒤에 extends를 적고 상속 받을 class명을 적어주면 됩니다. 아래 코딩을 살펴봅시다.
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
32
33
34
35
36
37 |
package blog;
public class Ex_class {
public static void main(String[] args) {
calculator cal = new calculator();
cal.plus(3, 5);
cal.division(10, 2);
cal.minus(6, 1);
cal.multiple(9, 3);
superCalculator scal = new superCalculator(); //계산기를 상속한 슈퍼 계산기
scal.sqrt(5);
scal.plus(3, 5);
}
}
class calculator {
public void plus(int num, int num2) {
System.out.println(num + num2);
}
public void minus(int num, int num2) {
System.out.println(num - num2);
}
public void multiple(int num, int num2) {
System.out.println(num * num2);
}
public void division(int num, int num2) {
System.out.println(num / num2);
}
}
class superCalculator extends calculator {
public void sqrt(int num) {
double sqrtResult = Math.sqrt(num);
System.out.println(sqrtResult);
}
}
|
cs |
계산기를 만든 후 상속을 통해서 계산기의 기본 기능을 물려 받은 슈퍼 계산기를 만들었습니다. 실행해보시면 콘솔창에 재대로 작동이 되고 있음을 확인할 수 있습니다. 그러면, 상속을 받은 클래스를 다시 한번 상속 받는 것도 가능할까요? 네, 가능합니다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45 |
package blog;
public class Ex_class {
public static void main(String[] args) {
calculator cal = new calculator();
cal.plus(3, 5);
cal.division(10, 2);
cal.minus(6, 1);
cal.multiple(9, 3);
superCalculator scal = new superCalculator(); //계산기를 상속한 슈퍼 계산기
scal.sqrt(5);
scal.plus(3, 5);
superbCalculator sbcal = new superbCalculator(); //슈퍼 계산기를 상속한 최상의 계산기
sbcal.log(5);
sbcal.plus(10, 5);
}
}
class calculator {
public void plus(int num, int num2) {
System.out.println(num + num2);
}
public void minus(int num, int num2) {
System.out.println(num - num2);
}
public void multiple(int num, int num2) {
System.out.println(num * num2);
}
public void division(int num, int num2) {
System.out.println(num / num2);
}
}
class superCalculator extends calculator {
public void sqrt(int num) {
double sqrtResult = Math.sqrt(num);
System.out.println(sqrtResult);
}
}
class superbCalculator extends superCalculator {
public void log(int num) {
System.out.println(Math.log(num));
}
} |
cs |
계산기를 물려 받은 슈퍼 계산기를 최상위의 계산기가 물려 받아 로그 연산까지 가능하도록 만들었습니다. javascript는 코딩하면서 이것 저것 신경쓸 일이 많았는데 extends 하나로 모든 처리가 끝나니 참 편하군요.
'IT > Java' 카테고리의 다른 글
Java - enum (0) | 2017.03.05 |
---|---|
Java - Interface(인터페이스) (0) | 2017.03.05 |
Java - abstarct class(추상 클래스) (0) | 2017.03.05 |
Java - Overloading(오버로딩)과 Overriding(오버라이딩) (0) | 2017.03.05 |
Java - Class와 instance (0) | 2017.02.26 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday