Notice
Recent Posts
Recent Comments
Link
04-28 06:42
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

<<개발일지>>

8-1인터페이스(인터페이스) 본문

Java 문법

8-1인터페이스(인터페이스)

개발하는지호 2023. 10. 11. 03:46

인터페이스 : 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킨다. 그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 된다.

즉, 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서이다. 따라서 개발 코드 측면에서는 코드 변경없이 실행 내용과 리턴값을 다양화할 수 있다는 장점이 있다.

 

인터페이스 선언

인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용한다,

[public] interface 인터페이스이름 {...}

 

*인터페이스 이름은 클래스 이름을 작성하는 방법과 동일하다. 영어 대소문자를 구분하며, 첫 글자를 대문자로 하고 나머지는 소문자로 작성하는 것이 관례이다.

 

인터페이스 구성

클래스 : 필드, 생성자, 메소드

인터페이스 : 필드, 메소드 -> 객체를 생성할 수 없기 때문에 생성자는 없다.

 

상수 필드 선언

인터페이스는 객체 사용 방법을 정의한 것이므로 실행 시 데이터를 저장할 수 있는 인스턴스 또는 정적 필드를 선언할 수 없다. 그러나 상수 필드는 선언이 가능하다. 단, 상수는 인터페이스에 고정된 값으로 실행 시에 데이터를 바꿀 수 없다.

 

*인터페이스에 선언된 필드는 모두 public static final의 특성을 갖는다. 이를 생략하더라도 컴파일 과정에서 자동으로 붙게 된다.

 

ex)

[public static final] 타입 상수이름 = 값;

 

*상수 이름은 대문자로 작성하되, 서로 다른 단어로 구성되어 있을 경우에는 언더바(_)로 연결하는 것이 관례이다.

 

추상 메소드 선언

인터페이스에 선언된 추상 메소드는 모두 public abstract의 특성을 갖기 때문에 public abstract를 생략하더라도 컴파일 과정에서 자동으로 붙게 된다.

 

인터페이스 구현

개발 코드가 인터페이스 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다. 객체는 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드를가지고 있어야 한다. 이러한 객체를 인터페이스의 구현 객체 라고 하고, 구현 객체를 생성하는 클래스를 구현 클래스라고한다.

 

구현 클래스

구현 클래스는 보통의 클래스와 동일한데, 인터페이스 타입으로 사용할 수 있음을 알려주기 위해 클래스 선언부에 implements 키워드를 추가하고 인터페이스 이름을 명시해야 한다.

 

ex)

public class 구현클래스이름 implements 인터페이스이름 {

  //인터페이스에 선언된 추상 메소드의 실체 메소드 선언

}

 

다중 인터페이스 구현 클래스

객체는 다음 그림과 같이 다수의 인터페이스 타입으로 사용할 수 있다.

인터페이스 A와 인터페이스 B가 객체의 메소드를 호출할 수 있으려면 객체는 이 두 인터페이스를 모두 구현해야 한다. 

 

ex)

public class 구현클래스이름 implements 인터페이스A, 인터페이스B {

  //인터페이스 A에 선언된 추상 메소드의 실체 메소드 선언

  //인터페이스 B에 선언된 추상 메소드와 실체 메소드 선언

}

 

 

 

'Java 문법' 카테고리의 다른 글

9-1중첩 클래스와 중첩 인터페이스  (0) 2023.10.15
8-2상속(타입 변환과 다형성)  (0) 2023.10.11
7-3상속(추상 클래스)  (0) 2023.10.09
7-2상속(타입 변환과 다형성)  (0) 2023.10.09
7-1.상속(상속)  (1) 2023.10.07