반응형
자바 인터페이스는 자바에서 클래스를 설계할 때 아주 중요한 도구 중 하나로, 클래스 간의 계약을 정의하고 이를 통해 코드의 유연성과 확장성을 높일 수 있다.
▷ 인터페이스(Interface)
인터페이스는 추상화의 일종으로 추상화를 심화시킨 것이다.
즉, 인터페이스는 구현할 클래스가 따라야 할 규약을 정의하는 역할을 한다.
아래 예제를 통해 인터페이스를 간단하게 구현하는 방법에 대해 알아보자.
| 인터페이스 구현
public interface Blog{
void mang(); // 추상 메서드
}
public class Write implements Blog {
@Override
public void mang(){
System.out.println("블로그 작성중");
}
}
클래스가 인터페이스를 구현하기 위해서는 'implements'라는 키워드를 사용해야 한다.
구현하는 클래스는 인터페이스에 정의된 모든 메서드를 반드시 구현해야 한다.
| 추상 클래스 특징
- 모든 메서드가 추상메서드만으로 구성되어 있음. 모든 메서드가 선언부만 있으며 인터페이스를 상속받는 클래스에서 실행부를 작성한다.
- 인터페이스의 모든 메서드는 'public static'이어야 하며, 모든 멤버변수는 'public static final'이어야 하지만 생략 가능.
- 인터페이스 상속 시 implements'키워드 사용한다.
- 인터페이스는 'interface 인터페이스 이름' 형식으로 사용한다.
- 인터페이스끼리에서도 상속이 가능한다. 이때 'extends'를 사용하여 일반 상속 규칙과 동일하다.
- 하나의 자식이 여러 인터페이스로부터 상속받는 다중 상속이 가능하다.
| 인터페이스 다중 구현 예시
public interface Blog {
void write();
}
public class mission implements Blog, Book { // Blog와 Book이라는 두 개의 인터페이스 구현
@Override
public void write() {
System.out.println("블로그 쓰는 중");
}
@Override
public void read() {
System.out.println("책 읽는 중");
}
}
| 인터페이스 예시
interface Blog{ // 인터페이스 생성
public final static String type1 = "java"; // 인터페이스 멤버변수
String type2 = "python"; // public final static 생략, 인터페이스 멤버변수
public abstract void write(); // 인터페이스 추상메서드
public abstract void read(); // 인터페이스 추상메서드
void find(); // public abstract void 생략, 인터페이스 추상메서드
}
class Mang implements Blog{
public void write(){ // 상속받은 3개의 추상 메소드를 완성
System.out.println(type1 + " 블로그 글 쓰는 중");
}
public void read(){ // 상속받은 3개의 추상 메소드를 완성
System.out.println(type2 + " 블로그 글 읽는 중");
}
public void find(){ // 상속받은 3개의 추상 메소드를 완성
System.out.println(type1 + ", " + type2 + " 블로그 찾아보기");
}
public void practice(){ // Mang의 자체적인 메서드 정의
System.out.println("블로그 연습하기");
}
}
public class MangInfo{
public static void main(String[] args){
Mang mang = new Mang(); // Mang 클래스의 인스턴스 생성
mang.write();
mang.read();
mang.find();
mang.practice();
}
}
Blog라는 이름의 인터페이스를 생성 후 type1과 type2의 멤버변수 정의, write()와 read(), find()의 추상 메서드 정의를 함.
그리고 Mang클래스에서 Blog 인터페이스를 상속받아 3개의 추상 메서드를 완성하고 practice() 메서드는 Mang 클래스 자체적으로 안에서 정의를 하였다.
마지막으로 MangInfo클래스에서 Mang 클래스의 인스턴스를 생성한 후 Blog 인터페이스로부터 상속받아 오버라이딩 한 것을 불러온다.
이렇게 자바 인터페이스는 클래스 간의 계약을 정의하고, 코드의 유연성과 재사용성을 높이는 중요한 도구이다.
인터페이스의 기본 개념부터 다양한 기능까지 숙지하여, 더욱 효율적인 자바 프로그램을 작성하도록 해보자!
위 글 개념 오류와 코드 오류가 있다면 댓글로 알려주시면 감사합니다!
반응형
'언어 공부하기 > JAVA 개념' 카테고리의 다른 글
[Java 자바] indexOf()와 substring() 메소드 사용법 및 예제 알아보기(자바 함수) (1) | 2024.11.13 |
---|---|
[Java 자바] length(), charAt() 메소드에 대하여 빠르게 알아보기(자바 함수) (1) | 2024.11.13 |
[Java 자바] 추상 클래스(abstract class)에 빠르고 쉽게 알아보기 : 기본 개념부터 코드까지 (자바 추상 클래스) (0) | 2024.08.12 |
[Java 자바] 상속(Inheritance)에 빠르고 쉽게 알아보기 : 기본 개념부터 코드까지 (자바 상속) (0) | 2024.08.06 |
[Java 자바] 배열(Arrays)에 대한 모든 것 : 기본 개념부터 코드까지 (자바 Arrays) (0) | 2024.07.30 |