티스토리 뷰
[JAVA,C#,Python 코드 비교] 10. 상속과 interface
1. 상속
- 자식 클래스가 부모 클래스부터 상속을 받게 되면 부모 클래스의 필드와 메서드 물려받음
- 중복된 코드 줄일 수 있고, 유지보수 편리, 통일성, 다형성 구현
* JAVA
- extends를 사용해서 상속을 받을 수 있음
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
|
class Animal{
public void AnimalMethod(){
System.out.println("Animal");
}
}
class Cow extends Animal{
public void CowMethod() {
System.out.println("UMMMM");
}
}
class Cat extends Animal{
public void CatMethod() {
System.out.println("Meow~");
}
}
class Dog extends Animal{
public void DogMethod() {
System.out.println("Wal~ ");
}
}
public class AnimalClass {
public static void main(String args[]){
Animal animal = new Animal();
Dog dog = new Dog();
animal.AnimalMethod(); //Animal
dog.AnimalMethod(); // Animal
dog.DogMethod(); // Wal~
}
}
|
cs |
2. Interface
* JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class CalculatorService{
public int calculate(char calculation, int num1, int num2){
if(calculation == '+'){
return num1+num2;
}else if(calculation == '-'){
return num1-num2;
}else{
throw new IllegalArgumentException("Unknown calculation"+calculation);
}
}
}
public class Server {
public static void main(String[] args){
CalculatorService calculatorService = new CalculatorService();
int result = calculatorService.calculate('+',1,1);
System.out.println(result);
}
}
|
cs |
- 이러한 코드를 가지고 JAVA CODE 테스트를 해버리면 유지보수가 힘들어진다.
- 더 좋은 코드는? 다음과 같은 코드이다.
- 이 코드가 왜 좋을까?
(1) Calculation 공통적인걸 interface로 주어 세부적인 것들을 각각 class 주게 되어 나중에 에러가 날 시에도 유지보수를 쉽게 만들어준다.
((2) interface도 생성자로 만들어 다음고 같이 쓸 수 있다.
Calculation calculation = new Multiplication();
int result4 = calculation.calculate(2,3);
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
interface Calculation{
int calculate(int num1, int num2);
}
class Addition implements Calculation{
@Override
public int calculate(int num1, int num2) {
return num1+num2;
}
}
class Subtraction implements Calculation{
@Override
public int calculate(int num1, int num2) {
return num1-num2;
}
}
class Multiplication implements Calculation{
@Override
public int calculate(int num1, int num2) {
return num1*num2;
}
}
class Division implements Calculation{
@Override
public int calculate(int num1, int num2) {
return num1/num2;
}
}
class CalculatorService{
private final Calculation calculation;
public CalculatorService(final Calculation calculation) {
this.calculation=calculation;
}
public int calculate(int num1, int num2){
return calculation.calculate(num1,num2);
}
}
public class Server {
public static void main(String[] args){
CalculatorService calculatorService = new CalculatorService(new Addition());
int result = calculatorService.calculate(1,1);
System.out.println(result);
int result2 = calculatorService.calculate(3,4);
System.out.println(result2);
CalculatorService calculatorService2 = new CalculatorService(new Division());
float result3 = calculatorService2.calculate(1,4);
System.out.println(result3);
Calculation calculation = new Multiplication();
int result4 = calculation.calculate(2,3);
System.out.println(result4);
}
}
|
cs |
cf) abstract
<출처>
1. 유튜브 KevinTV
2. JAVA 객체 지향 디자인패턴(정인상/채홍석 지음, 한빛미디어)
'Programming > JAVA&JAVASCRIPT비교' 카테고리의 다른 글
[JAVA, JAVASCRIPT, PYTHON] Call by ..... (0) | 2022.09.06 |
---|---|
[JAVA,C#,Python 코드 비교] 6. 배열과 컬렉션 (0) | 2022.04.24 |
[JAVA,C#,Python 코드 비교] 8. 익명클래스와 람다 (0) | 2020.09.11 |
댓글