인터페이스

5BRack·2022년 6월 30일

자바란?

목록 보기
16/42

인터페이스

인터페이스 : 호환성

  • 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다.
  • 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있다.

  • 하지만 인터페이스(interface)는 오로지 추상 메소드와 상수만을 포함할 수 있다.

정의

  • 인터페이스는 내부의 모든 필드가 pulbic static fianl로 정의된다.
  • static 메서드default 메서드를 제외한 모든 메서드들은 pulblic abstarct으로 정의된다.
  • class 키워드 대신 interface 키워드로 선언된다.

상속

  • 인터페이스는 다중 상속이 가능하다.
  • implements 키워드로 상속한다.
  • 인터페이스는 미완성 메서드를 가지고 있기 때문에 반드시 자식 클래스에서 오버라이딩을 통해 재정의 해줘야 객체 생성 및 사용할 수 있다.
  • 클래스와 인터페이스를 함께 상속할 때에는 extends 키워드와, implements 키워드를 함께 사용한다.
class D extends C implements B{} //클래스D는 C클래스를 상속받고 B인터페이스도 상속받는다.

class D extends C implements A,B{} //인터페이스는 다중 상속이 가능하다.

객체 생성

  • 추상 메서드를 포함하고 있어 객체를 직접 생성할 수 없다.
  • 자식클래스로 재정의 후 객체를 생성하는 방법과 익명 이너 클래스를 이용해 바로 객체를 생성할 수 있는 방법 2가지가 있다.
interface A{
	int a = 3;
    void abc();   //미완성 abstract 메서드
}
class B implements A{
	@Override
    void abc(){
    	System.out.println("오버라이딩");  //상속받아 클래스를 정의
    }
}

A a = new A(){
	@Override
	public void abc(){
    	System.out.println("오버라이딩"); // 익명 객체 생성
    }
}

default 메서드

  • 디폴트 메서드는 완성형 메서드이다.
  • java 8 이상부터 지원하는 기능이다.
  • public default를 붙여 표기한다.
  • 디폴트 메서드는 자식 클래스에서 오버라이딩이 가능하다.
interface 인터페이스명{
	public default 리턴타입 메서드명(){
    	// 메서드 내용
    }
}

static 메서드

  • java 8 이상부터 지원하는 기능이다.
  • 클래스 내부의 정적 메서드와 동일한 기능이다.
  • 인터페이스명.정적메서드명으로 호출한다.
interface A{
	static void fun(){
    	// 메서드 내용
    }
}

A a = new A();
a.fun(); 			//인터페이스명.정적메서드명으로 호출

0개의 댓글