[Java] 인터페이스(Interface)

달달·2024년 8월 1일

Java

목록 보기
1/1
post-thumbnail

자바는 객체 지향 프로그래밍 언어로, 클래스와 객체를 기반으로 하는 다양한 프로그래밍 패러다임을 지원한다. 그 중 하나가 인터페이스(Interface)이다.

📌 인터페이스(Interface)란?

인터페이스(Interface)는 자바에서 클래스가 구현해야 하는 메소드의 집합을 정의하는 데 사용된다. 인터페이스는 구현을 가지지 않고, 메소드 시그니처만을 포함한다. 이는 객체가 특정 기능을 제공하는 방식에 대한 규약을 정의한다.

📌 인터페이스의 주요 특징

추상 메소드:
인터페이스는 메소드의 시그니처만을 정의하고, 실제 구현은 포함하지 않는다. 인터페이스에 정의된 메소드는 기본적으로 publicabstract이다.

다중 상속:
자바의 클래스는 다중 상속을 지원하지 않지만, 인터페이스를 통해 다중 상속을 간접적으로 지원한다.

상수:
인터페이스는 상수를 정의할 수 있으며, 모든 상수는 public, static, final 로 자동 설정된다.

접근 제어자:
인터페이스 내의 모든 메서드는 암묵적으로 public이며, 생략할 수 있다.

구현 강제:
인터페이스를 구현하는 클래스는 인터페이스에 선언된 모든 메서드를 구현해야 한다.

📌 인터페이스의 선언

Animal.java

Animal 인터페이스는 두 개의 메서드, eat()sleep()을 선언한다.
이 메서드들은 추상 메서드로, 실제 구현은 인터페이스를 구현하는 클래스에서 제공해야 한다.

📌 인터페이스 구현

Dog.java

Dog클래스는 Animal인터페이스를 implements 키워드를 사용하여 구현한다.
Dog클래스는 eat()sleep()메서드를 오버라이드(재정의)하여 각각 "Dog is eating"과 "Dog is sleeping"이라는 메시지를 출력한다.

Cat.java

Cat클래스도 Animal 인터페이스를 implements 키워드를 사용하여 구현한다.
Cat클래스는 eat()와 sleep()메서드를 오버라이드(재정의)하여 각각 "Cat is eating"과 "Cat is sleeping"이라는 메시지를 출력한다.

Main.java


Main 클래스에서는 Animal 타입의 변수를 사용하여 DogCat 객체를 생성한다.
그런 다음, eat()sleep() 메서드를 호출하여 각 동물이 정의한 동작을 실행한다.

이렇게 인터페이스 타입을 사용하면, 동일한 인터페이스를 구현하는 다양한 객체를 다형성을 통해 처리할 수 있다.

  • 다형성: 객체 지향 프로그래밍에서 하나의 인터페이스 타입으로 선언된 변수(ex. Animal)에 여러 다른 실제 객체(ex. Dog, Cat)를 할당할 수 있는 능력을 의미한다. 이를 통해 동일한 메서드(ex. eat(), sleep()) 호출이 객체의 실제 타입에 따라 다르게 동작할 수 있다.

💻 Console

📌 요약

인터페이스가 동물들 간의 공통된 행동을 정의하고, 각 동물 클래스가 그 행동을 자신에 맞게 구체화하는 방법을 보여준다.

1.인터페이스 선언:
인터페이스는 모든 동물이 구현해야 할 메서드들을 선언한다.
2. 인터페이스 구현:
DogCat 클래스는 Animal 인터페이스를 구현하고, 각 동물에 맞게 메서드를 구체화한다.
3. 사용:
Main 클래스에서 Animal 타입으로 DogCat 객체를 생성하고, 그들의 메서드를 호출하여 실제 동작을 확인한다.

📌 정리하자면,

인터페이스는 다형성을 통해, 하나의 인터페이스 타입으로 선언된 변수에 다양한 실제 객체를 할당할 수 있고, 동일한 메서드 호출이 객체의 실제 타입에 따라 다르게 동작할 수 있다.

이는 코드의 유연성과 재사용성을 높이며, 객체 지향 프로그래밍의 강력한 기능 중 하나이다.

profile
안녕하세요

0개의 댓글