Computer Science/Java

Java - 추상화

ajdanddl 2020. 1. 26. 20:21
반응형

추상화에 대해 예제를 통해 알아보겠습니다.

 

추상화는 마치 설계를 하는 것과 같은 느낌입니다.

구체적인 내용은 하위 클래스에서 정의하고 대략적인 그림만 알려주는 것이 추상화입니다.

Java를 공부하면서 확실히 C보다 협업에 최적화되어있다는 느낌을 많이 받네요..

 

1
2
3
4
5
6
abstract class Player {//abstract :: 추상 클래스임을 알려줌
    abstract void play(String songName);
    abstract void pause();
    abstract void stop();
}
 
cs

음악 재생 클래스를 구현한다고 가정해봅시다.

그렇다면 3가지 기능 play, pause, stop 기능을 넣을것임을 추상화 클래스에 선언해줍니다.

 

다음으로 빠르게 부모 클래스의 메소드를 작성할 수 있는 팁입니다.

다음으로 Main 클래스를 만들어 Player 클래스를 상속해주면 에러가 하나 발생하는데요.

이를 해결하기 위해 

맨 왼쪽 위 에러 전구 클릭 -> Add unimplemented methods를 클릭해줍시다.

 

그러면 이렇게 부모 클래스의 메소드가 자동으로 입력됩니다.

 

그러고 메소드 내용을 간단히 채워줍니다.

 

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
public class Main extends Player {
 
    public static void main(String[] args) {
        //바로 play("Let it go")를 할 수 없는 이유는 play도 static void 형식이어야 하는데 그렇지 않기 때문
        Main main = new Main();//따라서 main 인스턴스를 생성해준다.
        main.play("Let it go");
        main.pause();
        main.stop();
    }
 
    @Override//반드시 구현해야 하는 요소임을 알려줌
    void play(String songName) {
        System.out.println("음악을 재생합니다.");
        
    }
 
    @Override
    void pause() {
        System.out.println("음악을 일시정지합니다.");
        
    }
 
    @Override
    void stop() {
        System.out.println("음악을 정지합니다.");
        
    }
 
}
cs

 

출력결과

반응형

'Computer Science > Java' 카테고리의 다른 글

Java - 인터페이스  (0) 2020.01.27
Java - Final  (0) 2020.01.27
Java - 상속  (0) 2020.01.26
Java - 클래스  (0) 2020.01.26
Java - 배열  (0) 2020.01.25