인터페이스(interface)란?
인터페이스란 객체의 사용 방법을 정의한 것입니다
인터페이스에 사용방법을 정의해 놓으면 사용하는 객체는 어떠한 객체를 사용할 것인지 정하지 않고 인터페이스 안에 정의된 메소드를 통해서 사용할 수 있습니다
코드를 통해서 알아봅시다!
인터페이스의 사용 방법
인터페이스의 사용방법은 생각보다 간단합니다
//일반적인 클래스 선언
public class 클래스명{...}
//인터페이스 선언
public interface 인터페이스명{...}
인터페이스는 일반 클래스명 작성방법과 같이 작성합니다
카멜 표기법을 사용합니다
ex)
일반클래스 = NomalClassName
인터페이스명 = InterfaceName
일반적으로 IDE(인텔리제이, 이클립스..)에서는 생성하는 방법은
클래스 생성하는곳 하단이나 옆에 있습니다
일반적인 클래스의 모양새는 이렇습니다
public class 클래스명{
String name1; //필드
String name2;
//생성자
public 클래스명(){
this.name1 = name1;
this.name2 = name2;
}
//메소드
public void test(){...}
}
인터페이스는
public Interface 인터페이스명{
//필드
[public static final] String NAME1 = "닭코치";
String NAME2 = "블로그";
//메소드
public void test();
}
인터페이스는 객체로 생성할 수 없기에 생성자를 생성하지 못합니다
또 필드는 상수필드로 선언이 됩니다 만약 [public static final]을 생략하셔도 컴파일 과정에서 자동으로 생성이 됩니다
상수는 대문자로 작성하는 관례가 있습니다
인터페이스 구현!!
인터페이스를 구현할때는 구현 클래스명 뒤에 implements를 붙여야 합니다
이렇게 말이죠
public class 구현클래스명 implements 인터페이스명{
//인터페이스 내부에 미리정의해 놓은 메소드를 선언합니다
}
상속과는 다르게 다중으로 받을 수 있습니다
public class test implements 인터페이스A,인터페이스B{
//A인터페이스 메소드 구현
//B인터페이스 메소드 구현
}
이렇게 말이죠
언제 인터페이스를 사용하나요???
인터페이스는 정말 정말 중요합니다
객체지향 프로그래밍에 꼭 필요한 것 같습니다 조금 지치실 수 있지만 예를 또 한 번 들어보겠습니다
public class BumperCase{
public String model(){
String name = "범퍼케이스";
return name
}
}
//사용
public class Test{
private BumperCase bumperCase;
public Test(BumperCase bumperCase){
this.bumperCase = bumperCase;
}
public void method(){
...
}
}
이 BumperCase이라는 핸드폰 케이스의 이름을 알려주는 클래스가 있다고 가정합니다
모든 핸드폰이 이 케이스를 사용합니다 그렇기 때문에 모든 폰의 케이스는 범퍼케이스 입니다
만약 BumperCase클래스가 아닌 다른 클래스로 바꿔야 할 일이 생긴다고 가정합니다
1~3개정도는 쉽게 변경이 가능하겠지만 100~10000개 정도로 늘어난다면 수기로 작성하는 것은 정말 지옥일 겁니다
이럴 때 인터페이스를 적용했다면???
public interface Case{
public String name();
}
먼저 케이스라는 인터페이스를 생성한 뒤
public BumperCase implements Case{
public String name(){
String name = "범퍼케이스";
return name;
}
}
//사용
public class Test{
private Case case;
public Test(Case cs){
this.cs = cs;
}
public void method(){
...
}
}
구현 객체만 변경을 해준다면 충분히 변경과 확장이 편리해집니다
최대한 쉽게 설명하려고 한 게 오히려 독이 될 수 있지만 추후 spring을 하시거나 아니면 다른 걸 하셔도
의존성을 최대한 줄이는 게 굉장히 중요합니다
부족한 부분이나 궁금증이 생기신다면 댓글로 알려주세요 큰 도움이 됩니다!
'java(자바)' 카테고리의 다른 글
charAt() 메소드에 대해서 (2) | 2022.01.17 |
---|---|
java 가변인자(varargs) 에 대해서 (2) | 2022.01.16 |