IT프로그램 언어/Java

Java(인터페이스와 추상클래스)

필립곽 2025. 1. 9. 16:26
반응형

이번 포스팅에서는 자바에서 중요한 개념인 인터페이스와 추상 클래스에 대해 알아보겠습니다. 이 두 개념은 객체 지향 프로그래밍에서 매우 중요한 역할을 하며, 코드의 재사용성과 유연성을 높이는 데 큰 도움이 됩니다. 

 

1. 추상 클래스 (Abstract Class)


1.1. 추상 클래스란?
추상 클래스는 인스턴스를 생성할 수 없는 클래스입니다. 즉, 직접 객체를 만들 수 없고, 다른 클래스에서 상속받아 사용해야 합니다. 추상 클래스는 일반 메서드와 추상 메서드를 가질 수 있습니다. 추상 메서드는 구현이 없는 메서드로, 이를 상속받는 클래스에서 반드시 구현해야 합니다.

1.2. 추상 클래스의 예제
// 추상 클래스 정의
abstract class Animal {
    // 일반 메서드
    void eat() {
        System.out.println("이 동물은 먹고 있습니다.");
    }

    // 추상 메서드
    abstract void sound();
}

// Animal 클래스를 상속받는 Dog 클래스
class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("멍멍!");
    }
}

// Animal 클래스를 상속받는 Cat 클래스
class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("야옹!");
    }
}

// 메인 클래스
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.eat(); // 출력: 이 동물은 먹고 있습니다.
        dog.sound(); // 출력: 멍멍!

        Animal cat = new Cat();
        cat.eat(); // 출력: 이 동물은 먹고 있습니다.
        cat.sound(); // 출력: 야옹!
    }
}


1.3. 추상 클래스의 특징
 -인스턴스를 생성할 수 없다.
 -일반 메서드와 추상 메서드를 가질 수 있다.
 -상속을 통해서만 사용할 수 있다.


2. 인터페이스 (Interface)

 

2.1. 인터페이스란?
인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의합니다. 인터페이스는 다중 상속을 지원하며, 클래스는 여러 개의 인터페이스를 구현할 수 있습니다. 인터페이스는 모든 메서드가 기본적으로 추상 메서드이며, 필드는 상수로만 정의할 수 있습니다.

2.2. 인터페이스의 예제
// 인터페이스 정의
interface Animal {
    void eat();
    void sound();
}

// Animal 인터페이스를 구현하는 Dog 클래스
class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("개가 먹고 있습니다.");
    }

    @Override
    public void sound() {
        System.out.println("멍멍!");
    }
}

// Animal 인터페이스를 구현하는 Cat 클래스
class Cat implements Animal {
    @Override
    public void eat() {
        System.out.println("고양이가 먹고 있습니다.");
    }

    @Override
    public void sound() {
        System.out.println("야옹!");
    }
}

// 메인 클래스
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.eat(); // 출력: 개가 먹고 있습니다.
        dog.sound(); // 출력: 멍멍!

        Animal cat = new Cat();
        cat.eat(); // 출력: 고양이가 먹고 있습니다.
        cat.sound(); // 출력: 야옹!
    }
}


2.3. 인터페이스의 특징
 -다중 상속이 가능하다.
 -모든 메서드는 기본적으로 추상 메서드이다.
 -필드는 상수로만 정의할 수 있다.


3. 추상 클래스 vs 인터페이스

 


4. 마치며

추상 클래스와 인터페이스는 자바에서 객체 지향 프로그래밍의 중요한 개념입니다. 추상 클래스는 공통된 기능을 제공하고, 인터페이스는 다양한 클래스가 동일한 메서드를 구현하도록 강제합니다. 이 두 개념을 잘 이해하고 활용하면, 더 나은 코드 구조와 유연성을 갖춘 프로그램을 만들 수 있습니다.

반응형