korean IT student

[Java-Live-Study] 8주차 - 인터페이스 본문

back-end/JAVA

[Java-Live-Study] 8주차 - 인터페이스

현창이 2021. 11. 2. 14:17

 

목표

자바의 인터페이스에 대해 학습하세요.

학습할 것 (필수)

  • 인터페이스 정의하는 방법
  • 인터페이스 구현하는 방법
  • 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
  • 인터페이스 상속
  • 인터페이스의 기본 메소드 (Default Method), 자바 8
  • 인터페이스의 static 메소드, 자바 8
  • 인터페이스의 private 메소드, 자바 9

 

1. 인터페이스란?

  • 인터페이스란 일종의 추상클래스이며, 추상클래스보다 추상화의 정도가 더 높다.
  • 추상클래스는 추상메서드 이외에도 구현부가 있는 일반메서드나, 변수를 사용할 수 있는 반면, 인터페이스는 오직 추상메서드와, 상수만을 가질 수 있다.

2. 인터페이스 정의하는 방법

interface hello {
    
    public static final 타입 상수 = 값;
    
    // 추상 메소드
    public abstract 메서드(매개변수);
    
    // 디폴트 메소드
    defalut 타입 메소드명(매개변수){}
    
    // 정적 메소드
    static 타입 메소드명(매개변수){}
    
}
  • 클래스를 정의할 때 class 대신 interface 사용
  • 모든 변수는 public static final 이 붙어야하며, 생략 시 컴파일러가 자동으로 추가
  • 모든 메서드는 public abstract이 붙어야하며, 생략이 가능하다.
    • JAVA 8에서 추가된 메소드로 defalut, static 메소드는 구현부가 있어야한다.

3. 인터페이스 구현하는 방법

public interface Animal {
   public void cry();
}

public class Cat implements Animal {
   @Override
   public void cry() {
      System.out.println("야옹");
   }
}

public class Dog implements Animal {
   @Override
   public void cry() {
      System.out.println("멍멍");
   }
}
  • 추상클래스는 클래스를 확장한다는 의미의 extends 키워드를 통해 구현 반면 인터페이스는 implements 키워드 사용

4. 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

public class Main {
    public static void main(String[] args) {
		Cat cat = new Cat();
		Dog dog = new Dog();
		
		dog.cry();  //출력 : 멍멍
		cat.cry(); //출력 : 야옹
    }
}
  • 위의 코드와 같이 참고하시면 됩니다.
  • dog 클래스와 cat 클래스 각각 구현한 내용이 다르므로 출력되는 값도 다르게 표출 됩니다.

5. 인터페이스 상속

public interface Animal{
	public abstract void cry();
}

public interface person {
	public abstract void man();
}

public class everyone implements Animal,person {
	@Override
	public void cry() {
		System.out.println("동물울음~~~");
	}
	
	@Override
	public void man() {
		System.out.println("남자~~~~");		
	}	
}
  • JAVA는 다중상속이 불가하지만, 인터페이스는 다중상속이 가능합니다.

6. 인터페이스의 기본 메소드 (Default Method), 자바 8

public interface DefaultInterface {

	void use();     // 추상메서드

	public default void using() {
		System.out.println("Default Method 실행");
	}
}
  • 인터페이스는 Method 정의만 할 수 있고 구현은 할 수 없었지만, 이를 보완하기 위해 기본 메소드가 생기면서 구현내용도 포함할 수 있습니다.

7. 인터페이스의 static 메소드, 자바 8

    public interface Animal {
        public static void cry(){
            System.out.println("static Method start");
        };
    }

    public static void main(String[] args) {
        
        Animal.cry(); // 출력 : static Method start
    }
  • 인터페이스에서 Method 구현이 가능하며, 반드시 클래스명으로 메소드를 호출
  • 재정의 불가능

8. 인터페이스의 private 메소드, 자바 9

    • private Method를 default Method에서 호출하여 사용할 수 있습니다.
    • private Method에 static 키워드를 사용할 경우, static Method에서 호출이 가능합니다.
Comments