최원종의 개발 블로그

인터페이스(interface) 본문

Java/Java 객체지향

인터페이스(interface)

chl6698 2026. 3. 6. 16:17

인터페이스란 객체의 동작을 정의하는 추상타입으로, 클래스가 구현해야 할 메서드의 설계도를 제공.

인터페이스는 구현 세부사항을 포함하지 않고, 메서드의 시그니처(이름, 매개변수, 반환 타입)만 정의하고, 이를 구현하는 클래스가 실제 동작을 제공. 이를 통해 다형성, 우연성, 코드 재사용성을 높일 수 있다.

 

인터페이스 개념

  • 모든 메서드가 추상 메서드로 선언됨 public abstract
  • 모든 변수는 상수로 선언됨 public static final
// 특징
    // 멤버 변수, 일반 구현 메서드를 가질 수 없고, 오직 추상 메서드와 static 상수만을 가질 수 있다.
    // 인터페이스는 표준, 규약(강제성 있는 약속)
    // 추상 클래스보다 추상화가 더 높다.

코드

-interface Animal

package com.tenco._interface;

//class 키워드 대신 interface 로 명시 하여야한다
public interface Animal {
    //여기 안에 선성된 모든 변수는 public static final 상수로 선언됨
    //여기 안에 선성된 모든 메서드는 public abstract 추상 메서드이다

    public static final int NUMBER = 1;

    //메서드에 선언부만 있고 바디가 없다 - 추상 메서드
    public abstract void eat();

    //인터페이스에 특징 때문에 심지어 public abstract 키워드 생략도 가능하다
    void move(); //public abstract 컴파일러가 자동으로 추가 해줌
}

 

-interface RemoteController

package com.tenco._interface;

//인터페이스 선언
public interface RemoteController {
    //인터페이스란?
    // 구현된 것이 아무것도 없는 밑 그림만 있는 기본 설계도

    //특징
    //멤버 변수, 일반 구현 메서드를 가질 수 없고, 오직 추상 메서드와 static 상수만을 가질 수 있다
    //인터페이스는 표준, 규약(강제성 있는 약속)
    //추상 클래스 보다 추상화가 더 높다.

    public abstract void turnOn();

    public abstract void turnOff();
}

 

클래스 코드

package com.tenco._interface;

public class Television extends HomeAppliances implements RemoteController {
    
    @Override
    public void turnOn() {
        System.out.println("티비 전원 ON");
    }

    @Override
    public void turnOff() {
        System.out.println("티비 전원 OFF");

    }
}

 

package com.tenco._interface;

public class Refrigerator extends HomeAppliances implements SoundEffect {
    @Override
    public void turnOn() {
        System.out.println("냉장고 전원 ON");
    }

    @Override
    public void turnOff() {
        System.out.println("냉장고 전원 OFF");
    }

    @Override
    public void soundOn() {
        System.out.println("뚜루뚜루~~~");
    }
}

 

-interface SoundEffect

package com.tenco._interface;

public interface SoundEffect {

    public abstract void soundOn();
}

'Java > Java 객체지향' 카테고리의 다른 글

인터페이스 활용  (0) 2026.03.06
추상 클래스(abstract class)  (0) 2026.03.06
다형성(Polymorphism)  (0) 2026.03.05
포함관계와 집합관계  (0) 2026.03.04
연관관계(Association)  (0) 2026.03.04