[java] Interface(인터페이스) 2

JUNG정·2024년 10월 22일

정우의 study space- 인터페이스2



용어의 간단 설명


  • extend: 확장
  • implements: 실행(상속)
  • Override: 슈퍼가 가지고 있는 메서드 중 내가 원하는 메서드를 그대로 가져다가 쓰는 방법

  • extend에서 Override : 확장이라는 말은 그냥 범위를 넓힌다.
  • implements에서 Override : 실행이라는 의미를 가진다.


1. 추상 메서드란?


추상 메서드는 메서드의 내용이 없는 메서드이다. 추상 메서드는 주로 부모 클래스 또는 인터페이스에서 자식 클래스에게 특정 기능을 반드시 구현하도록 강제할 때 사용한다. 예를 들어, 특정 행동을 모든 하위 클래스가 서로 다르게 구현해야 하는 상황에서 추상 메서드를 정의해서 사용한다.

abstract class Animal {
    abstract void sound(); // 추상 메서드, 구현부 없음
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Bark");
    }
}

위 예제에서 Animal 클래스는 sound()라는 추상 메서드를 가지고 있습니다. Dog 클래스는 이를 오버라이드하여 구체적인 구현을 제공한다.


2. 인터페이스란?


인터페이스는 클래스가 수행해야 할 동작을 정의하는 일종의 규칙이나 계약. 인터페이스는 메서드의 형태만 정의하며, 실제 구현은 인터페이스를 구현하는 클래스에서 한다. 이는 다중 상속 문제를 피하면서도 여러 기능을 공유할수 있도록 한다.

interface Vehicle {
    void move(); // 추상 메서드 선언
}

class Car implements Vehicle {
    @Override
    public void move() {
        System.out.println("The car is moving");
    }
}

Vehicle 인터페이스는 move()라는 추상 메서드를 정의하고 있으며, Car 클래스는 이를 구현하여 인터페이스가 요구하는 기능을 수행합니다.


3. 마크와 마커 인터페이스란?


마커 인터페이스(Marker Interface)는 아무런 메서드나 속성을 가지지 않는 인터페이스를 말한다. 마커 인터페이스는 그 자체로 기능을 제공하지 않지만, 클래스에 특별한 특성을 부여하는 데 사용됩니다. 마치 "나는 이런 속성을 가지고 있어!"라고 알려주는 표시 역할을 하는 것이다.

대표적인 예로 Java의 Serializable 인터페이스가 있습니다. 이 인터페이스는 객체를 직렬화 가능하게 표시하기 위해 사용됩니다. 마커 인터페이스는 메서드를 포함하지 않으므로, 이를 구현하는 클래스는 그저 특정 조건을 만족한다는 신호만 제공합니다.

public interface Serializable {
    // 아무 메서드도 없음
}

public class Person implements Serializable {
    private String name;
    private int age;
    // 객체 직렬화를 위한 표시만을 하는 역할
}

Person 클래스는 Serializable을 구현함으로써 직렬화 가능하다는 것을 Java 시스템에 알립니다.


4. 오버라이드(Override)란?


오버라이드(Override)는 상속받은 메서드를 자식 클래스에서 재정의하는 것이다. 부모 클래스의 메서드를 그대로 사용하는 것이 아니라, 자식 클래스의 요구에 맞게 다시 구현. 오버라이드는 메서드의 이름, 매개변수, 반환 타입이 부모와 동일해야 하며, 자식 클래스에서 부모의 기본 동작을 수정하거나 확장하는 데 유용합니다.

class Animal {
    void sound() {
        System.out.println("Some sound");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("Meow");
    }
}

Cat 클래스는 Animal의 sound() 메서드를 오버라이드하여 고유의 동작을 정의합니다. 이렇게 함으로써 Cat 객체의 sound() 호출 시 "Meow"를 출력하게 됩니다.


요약


추상 메서드는 구현부가 없는 메서드로, 자식 클래스에서 반드시 구현해야 합니다.

인터페이스는 클래스가 구현해야 하는 규칙을 정의합니다. 이를 구현한 클래스는 인터페이스의 메서드를 모두 구현해야 합니다.

마커 인터페이스는 메서드 없이 클래스에 특정 속성을 부여하는 표식 역할을 합니다.

오버라이드는 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미합니다.

profile
기록하는 습관

0개의 댓글