자바 인터페이스란
인터페이스란 '같은 기준으로 구현하기 위한 기본 밑그림' 으로 보시면 됩니다.
이 밑그림 속에 객체가 어떤 추상메소드와 어떤 상수로 구성되는지를 작성합니다.
밑그림만 구성하기 때문에 인터페이스 내부 메소드에는 로직을 작성할 수 없습니다.
인터페이스의 용도
내부 로직을 구현할 수 없는데 그럼 인터페이스는 어떠한 용도로 쓰는걸까?
클래스의 틀을 제공합니다. 대규모 프로젝트 개발 시 정형화된 개발을 위한 표준화로 사용할 수 있습니다.
표준화가 되기 때문에 프로그램의 유지보수성을 높일 수 있습니다.
클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적으로 프로그래밍이 가능합니다.
이 말은 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않도록 프로그래밍이 가능하다는 의미입니다.
인터페이스의 예시
데이터베이스로 예를 들어보겠습니다.
미국 표준협회에서는 SQL 문을 ANSI SQL 명목으로 표준화 시켜 놓았습니다. 이 표준화가 인터페이스 입니다.
표준화만 시켜놓았을 뿐 이 표준화 내부의 로직은 벤더사에서 알아서 구현합니다.
모든 데이터베이스( Oracle, MySQL, SQL Server 등) 은 테이블을 생성하기 위해서는 아래의 쿼리를 사용해야 합니다.
표준화된 쿼리를 사용하기 때문에 다른 데이터베이스로 변경하더라도 유지보수와 호환성 기능이 좋아지게 됩니다.
1
|
CREATE TABLE TABLE_NAME ( COL_NAME TYPE );
|
cs |
만약 아래와 같은 표준화가 없이 데이터베이스 마다 각자의 테이블을 생성하는 쿼리를 가지고 있다면 어떻게 될까요?
Oracle 의 테이블 생성 쿼리는 MySQL 이나 SQL Server 에서 사용할 수가 없습니다.
당연히 유지보수 비용이 올라가게 됩니다.
자바 인터페이스 예제
Person 클래스와 Animal 클래스에서 표준화 된 기능을 사용합니다.
내부 로직은 다를 수 있지만 사용하는 방식은 동일하기 때문에 클래스의 표준화 규격이 되고
클래스 간의 관계를 인터페이스로 연결할 수 있으며 클래스 간에 영향을 미치지 않고 프로그래밍이 가능합니다.
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
|
public class multiInterfaceTeest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person();
Animal a = new Animal();
p.f_height();
p.f_weight();
a.f_height();
a.f_weight();
}
}
interface height { public abstract void f_height(); }
interface weight { public abstract void f_weight(); }
class Person implements height, weight {
public void f_height() {
System.out.println ("183cm");
}
public void f_weight() {
System.out.println ("78kg");
}
}
class Animal implements height, weight {
public void f_height() {
System.out.println ("162cm");
}
public void f_weight() {
System.out.println ("112kg");
}
}
|
cs |
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] 자바 패키지(Package)란? (0) | 2021.03.16 |
---|---|
[JAVA] 자바 파일 분할, 파일 나누어 코딩하는 방법 (1) | 2021.03.16 |
[JAVA] 자바 인터페이스란 (0) | 2020.12.16 |
[JAVA] 자바 instanceof 연산자 (0) | 2020.12.16 |
[JAVA] 자바 추상클래스란 (0) | 2020.12.16 |