본문 바로가기
Java | spring/자바 객체지향

Java Interface 인터페이스 개념잡기!

by 워니 wony 2019. 5. 7.

인터페이스 Interface

  • 자바에서는 class 다중상속을 없다.
  • 다중상속의 효과를 기대할 목적으로 interface 이용
  • interface 하나의 자료형(Date Type)으로 생각
  • 상수와 메소드 선언부 만으로 구성(추상 메소드만으로 구성)
  • 일반 멤버 변수와 body 구체화 method 가질 없다.
  • 완전 추상이며, 굳이 메소드명 앞에 abstract 붙이지 않아도 된다. default abstract
  • 후손클래스들이 반드시 재정의 해야 메소드의 "명세서"
  • 인터페이스는 추상클래스와 마찬가지로 객체화 없다.
  • 인터페이스는 body 있는 메소드를 가질 없다.
  • 인터페이스의 멤버변수는 초기값을 줘야한다.(클래스 처럼 자동 초기값이 안된다)

 

 

인터페이스 구현하는 방법

  • 하나의 자료형 class처럼 interface 라고 쓰면 된다
  • interface B
  • 인터페이스를 구현하기 위해서는 implements 쓴다.

class C extends A(클래스명) implements B(인터페이스명)

  • 인터페이스는 여러 구현이 가능하다.

 

 

 

인터페이스 요소

  • 인터페이스 상수
  • 디폴트 메서드와 정적 메서드 : 자바 8부터는 인터페이스 활용성을 위해 제공하는 기능
    • 디폴트 메서드는 일반 메서드와 동일하게 구현하고, 메서드 자료형 앞에 default 예약어를 써주면 된다. 디폴트 메서드 재정의가 가능하다. 이클립스 source에서 추가 , super.메소드명( ); 부분을 삭제 재정의 하면 된다.
    • 정적 메서드는 static 예약어를 사용하여 선언하며 클래스 생성과 무관하게 사용 가능하다. 정적 메서드를 사용할 때는 인터페이스 이름으로 직접 참조하여 사용
    • private 메서드 : 자바 9 부터 인터페이스에 private 메서드 구현 가능, private 메서드는 인터페이스를 구현한 클래스에서 사용하거나 재정의 있다. 인터페이스에서는 private 예약어를 사용할 없지만, private static 메서드로 구현하면 된다.

 

 

class A{
	String title;

	public A(String title){
        this.title = title;
        }

        public void info(){
            System.out.println(title);
        }
}



interface B{
	public void pro();
}

 

 

인터페이스의 확장

인터페이스를 구현할때는 implements 키워드를 사용합니다.

interface 확장하여 새로운 Interface 만들때는 extends 사용

 

interface A
{
	public void pro();
}

interface B extends A
{
	public void test();
}


class C implements B
{
    //이 안에 pro 메소드와 test메소드를 모두 재정의 해줘야 한다.
}

 

이벤트 인터페이스의 경우, 이벤트 인터페이스를 implements 구현하면 frame add해당리스너(this) 해야 한다.

 

 

 

실제로 어떻게 쓰이는지 알기 위해서는 아래 포스팅으로 이동.

 

Java Interface 확장, 예제(멤버변수 변경 에러 이유)

자바의 인터페이스 개념이 궁금하다면 아래 내용부터 확인. Java Interface 인터페이스 개념잡기! 인터페이스 Interface 자바에서는 class의 다중상속을 할 수 없다. 다중상속의 효과를 기대할 목적으로 interface..

developsd.tistory.com

 

반응형

댓글