인터페이스(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();
}
}
출력 결과
'1. 웹개발 > 1_2_4 Java' 카테고리의 다른 글
[JAVA] copyOf() - 배열의 요소를 복사하는 메소드 (0) | 2020.05.06 |
---|---|
[JAVA] fill() - 배열의 요소를 초기화하는 메소드 (0) | 2020.05.05 |
[JAVA] throw - 예외를 발생시키는 방법 (0) | 2020.05.05 |
[JAVA] BinarySearch() - 배열에서 객체의 위치를 반환하는 메소드 (0) | 2020.02.23 |
[JAVA] this와 this()의 정의와 예제 (3) | 2020.02.19 |