JAVA에서 추상 클래스 (Abstract Classes)
Java는 객체 지향 프로그래밍 언어로서 다양한 기능과 특징을 갖추고 있습니다. 그 중에서도 추상 클래스는 Java에서 매우 중요한 개념 중 하나입니다. 이번 글에서는 Java의 추상 클래스에 대해 알아보도록 하겠습니다.
추상 클래스란 무엇인가?
추상 클래스는 미완성 클래스를 말합니다. 즉, 일부 메서드가 구현되지 않은 클래스를 의미합니다. 추상 클래스는 클래스의 일반적인 특징과 동시에 메서드를 추상적으로 정의하고자 할 때 사용합니다. 이러한 추상 메서드는 구현되지 않기 때문에 자식 클래스에서 구현되어야 합니다. Java에서 추상 클래스는 다음과 같이 정의됩니다.
abstract class 클래스이름 {
// 멤버 변수
// 메서드
// 추상 메서드
}
추상 클래스의 특징
추상 클래스에는 다음과 같은 특징이 있습니다.
1. 추상 클래스는 인스턴스화할 수 없습니다.
추상 클래스는 미완성 클래스이기 때문에 인스턴스화할 수 없습니다. 따라서 추상 클래스를 사용하려면 상속을 통해 자식 클래스를 만들어야 합니다.
2. 추상 클래스는 일반적인 메서드와 추상 메서드를 모두 가질 수 있습니다.
추상 클래스에는 일반적인 메서드와 추상 메서드를 모두 정의할 수 있습니다. 이 중에서 추상 메서드는 자식 클래스에서 반드시 구현되어야 합니다.
3. 추상 클래스는 일반적인 클래스와 마찬가지로 변수와 생성자를 가질 수 있습니다.
추상 클래스는 일반적인 클래스와 마찬가지로 변수와 생성자를 가질 수 있습니다. 하지만 추상 클래스에서도 반드시 생성자를 정의해야 합니다.
추상 클래스를 사용하는 이유
추상 클래스를 사용하는 이유는 다음과 같습니다.
1. 코드 재사용성
추상 클래스를 사용하면 자식 클래스에서 반드시 구현해야 하는 메서드를 정의할 수 있습니다. 이를 통해 코드의 재사용성을 높일 수 있습니다.
2. 다형성
추상 클래스를 상속하는 자식 클래스는 추상 메서드를 반드시 구현해야 합니다. 따라서 자식 클래스는 부모 클래스의 다형성을 지원하면서도 자신만의 독특한 기능을 추가할 수 있습니다.
3. 코드의 일관성 유지
추상 클래스를 사용하면 동일한 기능을 수행하는 클래스 간에 일관성을 유지할 수 있습니다. 추상 클래스는 공통적인 멤버 변수와 메서드를 정의할 수 있기 때문에 코드의 일관성을 유지하기 용이합니다.
추상 클래스와 인터페이스의 차이점
추상 클래스와 인터페이스는 모두 추상적인 개념을 나타내지만, 몇 가지 차이점이 있습니다.
1. 구현 상속과 인터페이스 상속
추상 클래스는 구현 상속을 지원합니다. 즉, 추상 클래스를 상속하는 자식 클래스에서 부모 클래스의 멤버 변수와 일반 메서드를 그대로 사용할 수 있습니다. 반면, 인터페이스는 인터페이스 상속만을 지원합니다. 따라서 인터페이스를 상속하는 클래스에서는 인터페이스에 정의된 모든 메서드를 반드시 구현해야 합니다.
2. 단일 상속과 다중 상속
Java에서는 클래스는 단일 상속만을 지원합니다. 즉, 한 클래스가 다른 클래스를 상속할 때는 오직 한 개의 클래스만을 상속할 수 있습니다. 반면, 인터페이스는 다중 상속을 지원합니다. 즉, 한 클래스가 여러 개의 인터페이스를 상속할 수 있습니다.
3. 일반 메서드와 추상 메서드
추상 클래스는 일반 메서드와 추상 메서드를 모두 가질 수 있습니다. 반면, 인터페이스는 추상 메서드만을 가질 수 있습니다.
추상 클래스 사용 예제
다음은 추상 클래스를 사용한 예제입니다.
abstract class Animal {
public void eat() {
System.out.println("먹는다.");
}
public abstract void move();
}
class Dog extends Animal {
public void move() {
System.out.println("걷는다.");
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.move();
}
}
위 예제에서 Animal 클래스는 추상 클래스로 정의되어 있습니다. Animal 클래스에는 일반 메서드인 eat()과 추상 메서드인 move()가 모두 정의되어 있습니다. Dog 클래스는 Animal 클래스를 상속받아 move() 메서드를 구현하고 있습니다. main() 메서드에서는 Dog 클래스의 인스턴스를 생성하여 eat()과 move() 메서드를 호출하고 있습니다.
결론
Java에서 추상 클래스는 매우 중요한 개념 중 하나입니다. 추상 클래스는 클래스의 일반적인 특징과 동시에 메서드를 추상적으로 정의하고자 할 때 사용합니다. 추상 클래스를 사용하면 코드의 재사용성을 높일 수 있으며, 다형성을 지원하면서도 일관성을 유지하게 됩니다. 또한, 추상 클래스와 인터페이스는 모두 추상적인 개념이지만 몇 가지 차이점이 있습니다. 추상 클래스는 구현 상속을 지원하고 일반 메서드와 추상 메서드를 모두 가질 수 있지만, 인터페이스는 인터페이스 상속만을 지원하고 추상 메서드만을 가질 수 있습니다.
추상 클래스를 사용하여 코드를 작성할 때는 상속 관계를 명확히 이해하고, 추상 클래스의 특징과 장단점을 잘 파악하여 사용해야 합니다. 추상 클래스를 사용하면 코드의 일관성을 유지하면서도 다양한 객체를 다룰 수 있어 유지보수성과 확장성을 높일 수 있습니다.
JAVA 인터페이스 개념과 활용
JAVA 인터페이스 개념과 활용 JAVA에서 인터페이스(Interface)는 클래스와 비슷한 개념으로, 추상 메소드와 상수(constant)만을 포함할 수 있습니다. 인터페이스는 클래스와 달리 인스턴스를 생성할 수
gruda.tistory.com
JAVA에서의 생성자와 소멸자
JAVA에서의 생성자와 소멸자 객체 지향 프로그래밍에서 클래스는 객체를 생성하기 위한 청사진(blueprint)이며, 객체는 클래스를 기반으로 생성된 인스턴스입니다. JAVA에서는 클래스를 정의할 때
gruda.tistory.com
Java에서 상속과 다형성의 이해
Java에서 상속과 다형성의 이해 Java는 객체 지향 프로그래밍 언어 중 하나로, 객체 지향 프로그래밍의 핵심 개념인 상속과 다형성을 지원합니다. 상속은 객체 지향 프로그래밍에서 객체들 간의
gruda.tistory.com
JAVA에서의 추상화와 캡슐화
JAVA에서의 추상화와 캡슐화 Java는 객체 지향 프로그래밍(OOP)의 특징을 가진 프로그래밍 언어입니다. 객체 지향 프로그래밍은 객체들의 상호작용을 기반으로 프로그램을 작성하는 방법입니다.
gruda.tistory.com
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA: 접근 제어자 (Access Modifiers) (0) | 2023.03.03 |
---|---|
JAVA: 중첩 클래스(Nested class)와 내부 클래스(Inner Classes) (0) | 2023.03.03 |
JAVA 인터페이스 개념과 활용 (0) | 2023.03.02 |
JAVA에서의 생성자와 소멸자 (0) | 2023.03.02 |
Java에서 상속과 다형성의 이해 (0) | 2023.03.02 |