본문으로 바로가기

[JAVA] 인터페이스(Interface)란?

category 1. 웹개발/1_2_4 Java 2020. 2. 21. 20:01

   

 

 

인터페이스(Interface)란?

다른 클래스를 작성할 때 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다.

 

 

자바에서는 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드 등을 포함할 수 있습니다.

하지만 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있습니다.

접근제어자 interface 인터페이스이름 { 
	public static final 타입 상수이름 = 값;
    ...
    public abstract 메소드이름(매개변수);
    ...
}

 

 

클래스와는 달리 인터페이스의 모든 필드는 public static final이어야 하고, 모든 메소드는 public abstract이어야 합니다. 하지만 제어자는 생략가능합니다. (컴파일러시 자동 추가됨)

 


인터페이스의 장점

- 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능합니다.

- 클래스의 작성과 인터페이스 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있습니다.

- 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능합니다.

 


구현 방법

인터페이스는 추상 클래스와 마찬가지로 직접 객체를 생성할 수는 없습니다.

따라서 인터페이스가 포함하고 있는 추상 메소드를 구현해 줄 클래스를 작성해야만 합니다.

이렇기 때문에 일조의 추상 클래스라기도 불립니다.

 

 

인터페이스 기본 문법

class 클래스 이름 implements 인터페이스 이름 {...}

 

클래스 이름 뒤에 implements 키워드만 추가해주시면 됩니다. 간단하죠?

그리고 ,(쉼표)를 통하여 여러개의 인터페이스를 추가할 수 있습니다.

 


아래 예제를 통하여 더욱 더 자세히 확인해보도록 하겠습니다.

package com.company;

interface Animal {
    public abstract void cry();
}
class Cat implements Animal {
    public void cry() {
        System.out.println("냐오오옹~");
    }
}

class Dog implements Animal {
    public void cry() {
        System.out.println("멍멍");
    }
}

public class Main{
    public static void main(String args[]) {
        Cat cat = new Cat();
        Dog dog = new Dog();

        cat.cry();
        dog.cry();
    }
}

 

 

 출력 결과

 

이렇게 미리 만들어진 Animal 인터페이스를 통하여 코드를 보기 쉽게 만들고 편리하게 만들어 줍니다.

 


아래의 예제는 인터페이스 다중 상속에 관련된 코드입니다.

package com.company;

interface Animal {
    public abstract void cry();
}
interface Pet {
    public abstract void play();
}
class Cat implements Animal, Pet {
    public void cry() {
        System.out.println("냐옹~");
    }
    public void play() {
        System.out.println("쥐를 잡자~");
    }
}

class Dog implements Animal, Pet {
    public void cry() {
        System.out.println("멍멍~");
    }
    public void play() {
        System.out.println("산책 가자~");
    }
}
public class Main{
    public static void main(String args[]) {
        Cat cat = new Cat();
        Dog dog = new Dog();

        cat.cry();
        cat.play();
        dog.cry();
        dog.play();
    }
}

 

 

출력 결과