Language/JAVA

[JAVA 기초 이론] 인터페이스 interface

오류나면꽥꽥 2024. 2. 20. 13:37

인터페이스

 

  • 객체 지향 프로그래밍에서 특정한 동작이나 기능을 정의하는 추상적인 개념
  • 클래스가 가져야 하는 메서드의 시그니처를 정의하고, 해당 메서드들을 구현하는 클래스는 인터페이스를 구현
  • 다형성(polymorphism)을 구현하고, 객체 간의 관계를 정의
// 인터페이스 정의
interface Animal {
    void sound(); // 추상 메서드
}

// 인터페이스를 구현하는 클래스
class Dog implements Animal {
    public void sound() {
        System.out.println("Dog barks"); // 추상 메서드 구현
    }
}

 

 

 

 

✋ 인터페이스 사용 이유

 

▶ 다중 상속 가능

자바는 클래스 딱 한개만 상속받을 수 있는데 인터페이스는 여러 개의 부모 클래스를 가질 수 있습니다.

 

코드의 유연성과 확장성을 높이고, 객체 간의 결합도를 낮추는 데에 사용

소프트웨어의 유지보수성과 확장성을 향상시키는 데에 중요한 역할

 

 

 

 

 

📌 인터페이스 특징

 

  1. 다중 상속
    - 클래스는 여러 개의 인터페이스를 동시에 구현

  2. 추상 메서드만 보유 
    - 인터페이스는 추상 메서드만 가지고 있습니다. 

  3. 구현 강제
    - 클래스가 인터페이스를 구현한다면, 해당 인터페이스에서 정의된 모든 메서드를 반드시 구현

  4. API의 일부
    - 자바 API에서 많이 사용되며, 클래스와 클래스 간의 연결고리를 제공

  5. 다형성의 지원
    - 상속과 메서드 오버라이딩(재정의)에 기반으로 다양한 객체들을 동일한 방식으로 다룰 수 있습니다.

 

다형성?

객체 지향 프로그래밍의 중요한 개념 중 하나로, 동일한 메서드 호출에 대해 다양한 동작을 수행할 수 있는 능력

 

 

 

 

 

ex)

// 인터페이스 정의
interface Animal {
    void sound(); // 추상 메서드
}

// 인터페이스를 구현하는 클래스
class Dog implements Animal {
    public void sound() {
        System.out.println("Dog barks"); // 추상 메서드 구현
    }
}

// 인터페이스를 구현하는 다른 클래스
class Cat implements Animal {
    public void sound() {
        System.out.println("Cat meows"); // 추상 메서드 구현
    }
}

// 인터페이스를 사용하는 코드
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog(); // Dog 클래스의 객체 생성
        Animal cat = new Cat(); // Cat 클래스의 객체 생성
        
        // 각 동물이 소리를 내도록 호출
        dog.sound(); // Dog 클래스의 sound() 메서드 호출
        cat.sound(); // Cat 클래스의 sound() 메서드 호출
    }
}

 

출력)

더보기

Dog braks

Cat meows

 

 

 

 

✅ 다중 상속

 

ex)

class ParentClass {
  public void p() { System.out.println("일반메서드"); }
}

interface A {
  public void a();
}

interface B {
  public void b();
}

class Test extends ParentClass implements A, B, C {
  public void a() {}
  public void b() {}
}

 

인터페이스끼리도 상속할 수 있다. 

 

interface A {
  public void a();
}

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

 

 

 

 

 

 

[JAVA/JAVA] - [JAVA 기초 이론] 인터페이스 / 추상 클래스 / 상속 비교 정리

 

[JAVA 기초 이론] 인터페이스 / 추상 클래스 / 상속 비교 정리

인터페이스 (Interface) 인터페이스는 클래스에 대한 약속을 정의합니다. 클래스가 해당 인터페이스를 구현하면 인터페이스에 정의된 모든 메서드를 반드시 구현해야 합니다. // 인터페이스 정의 i

coding-bird.tistory.com