Programming/Java

추상 클래스

사랑우주인 2024. 10. 8. 17:57

목차

1. 추상 클래스 특징

2. 인터페이스와 차이점

3. 추상 클래스의 목적

 

"추상 클래스는 공통 기능을 제공하면서 하위 클래스가 필수적으로 구현해야 할 규격을 정의하여 일관성과 다형성을 지원하는 클래스 설계 도구이다."

 

1. 추상 클래스 특징

- 일부 메서드를 구현하지 않고 서브 클래스에서 구체화하도록 강제하는 클래스

- 인스턴스화 할 수 없다

- 세부 구현은 자식 클래스가 맡는다.

public abstract class Animal {
    public String kind;

    public void breath(){
        System.out.println("숨 쉰다.");
    }
    //추상메서드
    public abstract void sound();//구체적인 구현부는 없음!
}

 

2. 인터페이스와 차이점

  상속 메서드 구현
추상 클래스 다중 상속 X 일부 메서드는 구현을 제공
인터페이스  다중 상속 O 모든 메서드 구현 없이 선언만

추상 클래스

public abstract class Animal {
    public abstract void eat();
}

public abstract class Mammal {
    public abstract void walk();
}

// 오류가 발생하는 예
public class Dog extends Animal, Mammal { // 다중 상속 불가
    @Override
    public void eat() {
        System.out.println("Dog eats.");
    }

    @Override
    public void walk() {
        System.out.println("Dog walks.");
    }
}

인터페이스

public interface Flyable {
    void fly();
}

public interface Swimmable {
    void swim();
}

public class Duck implements Flyable, Swimmable {
    @Override
    public void fly() {
        System.out.println("Duck flies.");
    }

    @Override
    public void swim() {
        System.out.println("Duck swims.");
    }
}

추상 클래스의 목적

- 공통된 기능 제공

- 구현 강제(추상 메서드)

- 다형성 지원(다형성: 같은 기능인데, 다른 결과를 도출할 수 있음)

- 코드 일관성 유지