Language/JAVA

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

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

✅ 인터페이스

  1. 객체 지향 프로그래밍에서 특정한 동작이나 기능을 정의하는 추상적인 개념
  2. 클래스가 가져야 하는 메서드의 시그니처를 정의하고, 해당 메서드들을 구현하는 클래스는 인터페이스를 구현
  3. 다형성(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