[자바/Java]인터페이스(interface)
안녕하세요 오늘은 자바에서 인터페이스(interface)에 대해 알아보겠습니다.
인터페이스(interface)란?
inter(사이의) + face(마주하다)의 합성어로 물체들 사이에서 상호작용 할 수 있도록 하는 매개 역할
인터페이스는 하나의 규격이라 생각하면 좋습니다.
우리가 일상생활에서 사용하는 핸드폰 충전기도 라이트닝 충전기를 사용하는 아이폰 충전기가 있고
Usb C타입을 사용하는 갤럭시 충전기가 따로 있듯이 이러한 규격을 만들어 줌으로써
자바에서의 다형성을 극대화하여 개발코드의 수정을 줄이고 유지보수에 용이한 역할을 합니다.!
인터페이스의 멤버
- 상수 ⇒ final타입 변수명 = 값;
- 추상 메서드 ⇒ abstract 리턴 타입 메서드명( );
- 일반 메서드
- 정적 메서드
인터페이스 구조
interface 인터페이스명{
필드
}
인터페이스를 만들려면 기존의 클래스와 구조는 비슷하지만 interface라는 키워드가 들어가야 합니다.
클래스로 인터페이스 구현
class 클래스명 implements 인터페이스명{
추상 메서드 구현
}
인터페이스를 클래스로 구현할 때는 implements라는 키워드가 들어갑니다.
implements : 내가 설정한 인터페이스를 따르겠다 라는 의미입니다.
인터페이스 사용 시 주의할 점!
- 인터페이스 내 변수 불가(상수만 가능)
- 인터페이스로 객체 생성 불가(추상 클래스와 마찬가지입니다.)
- 인터페이스 내 멤버 메서드 abstract키워드 생략 가능
- 인터페이스 내 멤버 변수 final키워드 생략 가능
인터페이스 사용 예시 코드
interface부분
interface Ainter{
final int x=10;
int y=20; //final 생략가능
abstract void methodA();
void methodB();// abstract 생략 가능
}
추상 메서드인 methodA()와 methodB가 있습니다.
이렇게 선언된 추상 메서드는 반드시 클래스로 구현을 할 때 오버 라이딩을 해주어야 합니다.
interface클래스로 구현
class A implements Ainter => Ainter 인터페이스를 A라는 클래스가 구현하겠다!
interface에 선언돼있는 추상 메서드를 오버 라이딩해주었습니다.
class A implements Ainter{
@Override
public void methodA() {
System.out.println("methodA()");
}
@Override
public void methodB() {
System.out.println("methodB()");
}
}
Main 메서드
public class IInterface1 {
public static void main(String[] args) {
A a= new A();
a.methodA();
a.methodB();
//b.x=30; => 상수이기 때문에 변경 불가
}
}
출력 결과
클래스 a에서 재정의한 메서드가 잘 출력되는 것을 볼 수 있습니다~!
인터페이스 다중 구현
인터페이스는 다중으로 클래스에서 구현할 수 있습니다.
클래스는 다중 상속이 안되지만 인터페이스는 다중으로 상속을 할 수 있습니다.
인터페이스 다중 구현 예시 코드
인터페이스 부분
interface A_inter{
abstract void methodA();
}
interface B_inter{
abstract void methodB();
}
interface C_inter{
abstract void methodC();
}
인터페이스를 다중 구현한 클래스 AA
class AA implements A_inter,B_inter,C_inter{
@Override
public void methodC() {
System.out.println("methodC");
}
@Override
public void methodB() {
System.out.println("methodB");
}
@Override
public void methodA() {
System.out.println("methodA");
}
}
A_inter, B_inter, C_inter 총 세 개의 인터페이스를 AA클래스가 구현했습니다.
Main메서드
public class Interface {
public static void main(String[] args) {
AA a= new AA();
a.methodA();
a.methodB();
a.methodC();
}
}
출력 결과
AA클래스에서 오버 라이딩한 메서드가 잘 출력되는 것을 볼 수 있습니다!
자 오늘은 이렇게 자바에서 사용되는 인터페이스에 대해 알아보았습니다.
이상으로 포스팅 마치겠습니다.
글 읽어주셔서 감사합니다!!
