2017년 6월 8일 목요일
인터페이스 ( interface )
■ 인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.
■ 인터페이스의 작성
키워드로 class 대신 interface를 사용한다.
interface 인터페이스이름{
public static final 타입 상수이름 = 값;
public abstract 메서드이름 ( 매개변수 목록 ) ;
}
interface에도 클래스와 같이 접근제어자로 public 또는 default를 사용할 수 있다.
일반적인 클래스의 멤버들과 달리 인터페이스의 멤버들은 다음과 같은 제약이 있다.
- 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다.
- 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다.
인터페이스에 정의된 모든 멤버에 예외없이 적용되는 사항이기 때문에 제어자를 생략할 수 있는것이며, 편의상 생략하지만, 생략된 제어자는 컴파일 시에 컴파일러가 자동적으로 추가해 준다.
■ 인터페이스의 상속
인터페이스는 인터페이스로 부터만 상속받을 수 있으며, 클래스와는 달리 다중상속, 즉 여러개의 인터페이스로 부터 상속을 받는 것이 가능하다.
[참고] 인터페이스는 클래스와 달리 Object클래스와 같은 최고 조상이 없다.
interface Movable{
void move(int x, int y);
}
interface Attackable{
void attack(Unit u);
}
interface Fightable extends Movable, Attackable{ }
■ 인터페이스의 장점
- 개발시간을 단축 시킬 수 있다.
인터페이스가 작성되면, 이를 사용해서 프로그램을 작성하는 것이 가능하다.
메서드를 호출하는쪽에서는 메서드의 내용에 관계없이 선언부만 알면 되기 때문이다.
그리고 동시에 다른 한 쪽 에서는 인터페이스를 구현하는 클래스를 작성하도록 하여, 인터페이스를 구현하는 클래스가 작성될 때 까지 기다리지 않고도 양쪽에서 동시에 개발을 진행 할 수 있다.
- 표준화가 가능하다.
프로젝트에 사용되는 기본 틀을 인터페이스로 작성한다음, 개발자들에게 인터페이스를 구현하여 프로그램을 작성하도록 함으로써 보다 일관되고 정형화된 프로그램의 개발이 가능하다.
- 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
서로 상속관계에 있지도 않고, 같은 조상클래스를 가지고 있지 않은 서로 아무런 관계도 없는 클래스들에게 하나의 인터페이스를 공통적으로 구현하도록 함으로써 관계를 맺어 줄 수 있다.
- 독립적인 프로그래밍이 가능하다.
인터페이스를 이용하면 클래스의 선언과 구현을 분리시킬 수 있기 때문에 실제구현에 독립적인 프로그램을 작성하는 것이 가능하다. 클래스와 클래스간의 직접적인 관계를 인터페이스를 이용해서 간접적인 관계로 변경하면, 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않는 독립적인 프로그래밍이 가능하다.
피드 구독하기:
댓글 (Atom)
JavaScript_함수의 역할
◎ 자바스크립트 함수의 역할 ■ 자바스크립트 함수와 메서드는 전혀 다른 개념이다. - 자바스크립트 함수는 메서드 역할을 할 수 있지만, 객체지향 프로그래밍의 메서드는 자바스크립트의 함수 역할을 할 수 없다. - 메서드와는 다르게 ...
-
■ 정의 : Runtime Data Areas는 Process로서의 JVM 이 프로그램을 수행하기 위해 OS로 부터 할당받는 메모리 영역 Runtime Data Areas의 5개의 영역 PC Registers Method Area Hea...
-
변수란 단 하나의 값을 저장할 수 있는 저장 공간이다. 변수는 기본형과 참조형 변수로 나눌 수 있다. 자바는 C언어와 달리 참조형 변수간의 연산을 할 수 없다. 실제 연산에 사용되는 것은 모두 기본형 변수이다. 참조형 변수는 null...
-
추상 - 낱낱의 구체적 표상이나 개념에서 공통된 성질을 뽑아 이를 일반적인 개념으로 파악하는 정신작용 상속이 자손 클래스를 만드는데 조상 클래스를 사용하는 것이라면, 이와 반대로 추상화는 기존의 클래스의 공통부분을 뽑아내서 조상클래스를 만드는 것...
댓글 없음:
댓글 쓰기