Contents
- 인터페이스가 뭐임!
- 인터페이스 왜씀?
- 인터페이스 어케씀!
- 이..이게 인터페이스…?
인터페이스란?
● 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것
● 구현된 것은 아무것도 없는 밑그림만 있는 기본 설계도
● 다른 클래스를 작성할 때 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상클래스
● 클래스들이 구현해야 하는 동작을 지정하는 용도로 사용되는 추상자료형
● 추상 매소드의 집합으로 미완성된 설계도
● 미리 정해진 규칙에 맞게 구현하도록 표준을 제시한다
인터페이스의 장점
● 여러명이서 작업을 할 때 미리 인터페이스를 작성함으로써 메소드를 정할 수 있다
● 다중상속을 통한 이점을 누릴 수 있다
● 확장에는 열려있고 변경에는 닫혀있는 클래스간의 결합도(코드 종속성)를 낮춘 유연한 방식의 프로그래밍이 가능하다
● 개발코드가 인터페이스의 메서드를 호출하면 인터페이스는 객체의 매서드를 호출한다. 객체의 내부구조를 알 필요가 없고, 인터페이스의 메서드만 알면된다
● 개발코드를 수정하지 않고, 사용하는 객체를 변경할 수 있다
● 코드 변경없이 실행내용과 리턴 값을 다양화 할 수 있다(다형성)
● 서로 관계없는 클래스들에게 관계를 맺어줄 수 있다.
인터페이스 선언
Public interface 인터페이스명 {
…
}
인터페이스 작성
인터페이스에서는 상수, 추상메소드, 디폴트메소드, 정적메소드를 선언할 수 있다.
.Public interface 인터페이스명 {
// 상수
(public static final) 타입 상수명 = 값;
// 추상 메소드
(public abstract) 타입 메소드명(매개변수, …);
// 디폴트 메소드
Default 타입 메소드면(매개변수, …){
// 구현부
}
// 정적 메소드
Static 타입 메소드명(매개변수, …){
// 구현부
}
}
인터페이스 구현
인터페이스는 직접 인스턴스를 생성할 수 없다. 그래서 인터페이스를 구현하는 것은 클래스에 implements 하여야한다. 인터페이스를 구현하기 위해서는 정의된 모든 추상메소드를 구현해야한다.
Public class 클래스명 implements 인터페이스명 {
…
}
Public interface ExampleInterface {
Void method1(int x); // 추상메소드
}
Public class Example implements ExampleInterface {
method1(int x){ // 추상메소드 구현
return x;
}
}
인터페이스 다중상속
인터페이스는 다중상속이 가능하다. 부모클래스는 전부 인터페이스여야한다.
Interface FirstInterface { // 1번 인터페이스
Void move(int x, int y);
}
Interface SecondInterface { // 2번 인터페이스
Void run(int x, int y);
}
Interface Player extends FirstInterface, SecondInterface { } // 2개의 인터페이스를 상속받은 인터페이스
public class Warrior implements Player{
public void move(int x, int y){ // 1번인터페이스에서 정의된 추상메소드
return null;
}
public Void run(int x, int y){ // 2번인터페이스에서 정의된 추상메소드
return null;
}
}
상속과 인터페이스 구현이 동시에 가능하다
Class 클래스명 extends 부모클래스명 implements 인터페이스명 {
// 인터페이스에 정의된 추상메서드 구현
}
인터페이스 이해
● 인터페이스는 특정 기능을 구현하기 위한 필수 규격을 주는 것
● 코드 종속성을 낮추어 클래스간 영향을 미치지 않는 독립적인 프로그래밍이 가능하다.
● 여러 개발자가 동시에 프로젝트를 진행할 수 있어서 개발속도가 빨라진다.
'아 이게 뭐임!' 카테고리의 다른 글
자바스크립트 시간 가져오기(시간 찍기) (0) | 2021.07.02 |
---|---|
REST API가 뭐임!! (0) | 2021.07.02 |
Servlet이 뭐임!! (0) | 2021.07.01 |
PuTTY가 뭐임!! (0) | 2021.06.30 |
SVN이 뭐임!!!! (0) | 2021.06.29 |