본문 바로가기

java(자바)

java 인터페이스(interface) 사용 방법

반응형

인터페이스(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