앱 만들기/안드로이드 study

자바 인터페이스 란?

나도처음이야 2020. 8. 26.
반응형

인터페이스 란? 

프로그램 명세서 라고 말할 수 있다.

하기 예를 보면서 이야기 해보자.

 

3명이서 앱을 만든다고 하자. 팀장 과 두명의 부하 직원이 있다

팀장이 하기처럼, "Animal 이라는 인터페이스를 정의하고 해당 인터페이스를 implements 할때는

sound() 함수를 꼭 구현해야 한다."라고 명시를 해준다.

즉, 하나의 명세서를 만든것이다.

인터페이스는 하기처럼 내부에 함수를 선언만 해준다.

1
2
3
4
5
 
public interface Animal {
    public void sound();
}
 
cs

 

팀원들은 하기 처럼 개와 고양이 클래스를 만들고 Animal 을 implments 한다.

Animal 인터페이스를 구현하는 클래스 에서는 인터페이스에서 정의한 메소드를 반드시 구현 해주어야 한다.

그렇지 않으면 에러가 발생하기에, 팀원들은 당연히 sound 코드를 오버라이딩 해서 구현해야만 한다.

Cat 클래스에서는 "야옹" 소리를 내고 Dog 클래스에서는 "멍멍" 이란 소리를 내도록 구현했다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Cat.java]
public class Cat implements Animal{
 
    @Override
    public void sound() {
        // TODO Auto-generated method stub
        System.out.println("야~옹!");
    }
 
}
 
 
[Dog.java]
public class Dog implements Animal{
 
    @Override
    public void sound() {
        // TODO Auto-generated method stub
            System.out.println("멍멍!");
    }
 
}
 
cs

 

그리고, Main.java 에서 하기 처럼 구현을 한다. 

animal 인터페이스는 Cat 과 Dog 의 모습으로도 표현 될 수 있는 것이다.

즉, 이것은 객체지향 언어에서는 다형성 이라고 말한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
   // 인터페이스를 활용한 다형성.  
        Animal animal[] = { new Cat() , new Dog()} ;
        
        for(int i = 0; i < animal.length ; i++)
            animal[i].sound();
        
    }
 
}

-- 결과 --
야~옹!
멍멍!



cs

 

 

인터페이스를 꼭 써야 하는 것은 아니지만,

인터페이스를 통해서 프로그램을 구성하면 프로젝트 단위에서 보다 효율적인 앱을 만들 수 있다.

감사합니다.

 

* 인터페이스 는

  - 직접 객체화 할 수 없다.

  - 인터페이스는 선언 만 한다. 함수 선언 및 static 변수만.

  - 클래스 에서 인터페이스를 구현하고 클래스 화 한다.

  - 인터페이스는 명세서 이다.

  - 인터페이스를 구현한 클래스는 다양한 인터페이스 데이타 타입을 가질 수 있다. ( 다형성 )

반응형

댓글