인터페이스

실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를

개인공부하며 정리하는 용도의 포스팅입니다.

학습목표


  • 객체가 다양한 데이터 타입을 가질 수 있는 방법에 대해 학습

인터페이스란?


클래스와 달리 객체를 생성할 수는 없고 클래스에서 구현해야 하는 작업 명세서

interface1

인터페이스를 사용하는 이유


많은 이유가 있으나 가장 큰 이유는 객체가 다양한 자료형(타입)을 가질수 있기 때문이다.

public class ImplementClass implements InterfaceA,InterfaceB, InterfaceC, InterfaceD {
    public ImplementClass() {
        System.out.println("ImplementClass constructor");
    }
}
InterfaceA ia = new ImplementClass();
InterfaceB ib = new ImplementClass();
InterfaceC ic = new ImplementClass();
InterfaceD id = new ImplementClass();

interface2

인터페이스 구현


class 대신 interface 키워드를 사용하며, extend 대신 implements 키워드를 이용한다.

public interface InterfaceA {
    public void funA();
}
public interface InterfaceB {
    public void funB();
}
public interface InterfaceC {
    public void funC();
}
public interface InterfaceD {
    public void funD();
}
public class ImplementClass implements InterfaceA, InterfaceB, InterfaceC, InterfaceD {
    
    @Override
    public void funA() {
        System.out.println(" -- funA START --");
    }
    
    @Override
    public void funB() {
        System.out.println(" -- funB START --");
    }
    
    @Override
    public void funC() {
        System.out.println(" -- funC START --");
    }
    
    @Override
    public void funD() {
        System.out.println(" -- funD START --");
    }
}
  • interfaceimplements 키워드 다음에 구현되어 있다.

장난감 인터페이스


interface를 이용하면 객체가 다양한 자료형(타입)을 가질 수 있다.

Toy robot = new ToyRobot();
Toy airplane = new ToyAirplane();

Toy toys[] = {robot, airplane};

for (int i = 0; i < toys.length; i++) {
    toys[i].walk();
    toys[i].run();
    toys[i].alarm();
    toys[i].light();
    
    System.out.println();
}

결과

The robot can walk
The robot can run
The robot has no alarm function
The robot has light function

The airplane can not walk
The airplane can not run
The airplane has alarm function
The airplane has no light function

interface3

Reference


실전 자바 강좌 (ver.2018) - 인터페이스

Comments