2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

자바에서 추상 클래스(Abstract Class)란 무엇인가요?

_____
Q1: 자바에서 추상 클래스(Abstract Class)란 무엇인가요?
A1: 추상 클래스는 하나 이상의 추상 메서드(구현되지 않은 메서드)를 포함할 수 있는 클래스입니다. 직접 객체를 생성할 수 없으며, 서브클래스에서 상속받아 구현하도록 설계된 클래스입니다.

Q2: 추상 클래스와 일반 클래스의 차이점은 무엇인가요?
A2: 일반 클래스는 인스턴스화가 가능하며 모든 메서드가 구현되어 있어야 합니다. 반면 추상 클래스는 인스턴스화가 불가능하며, 하나 이상의 추상 메서드를 포함하여 일부 메서드 구현을 서브클래스에 의존합니다.

Q3: 추상 클래스는 왜 사용하나요?
A3: 공통 기능을 공유하면서 서브클래스에 특정 기능 구현을 강제하기 위해 사용합니다. 즉, 공통의 뼈대를 제공하고, 세부 구현은 하위 클래스가 다르게 만들도록 설계할 때 유용합니다.

Q4: 추상 클래스는 어떻게 선언하나요?
A4: 클래스 선언에 `abstract` 키워드를 사용합니다.
```java
public abstract class Animal {
public abstract void makeSound(); // 추상 메서드
public void sleep() {
System.out.println("Sleeping...");
}
}
```

Q5: 추상 클래스 내에 추상 메서드가 없어도 되나요?
A5: 네, 추상 메서드가 없어도 추상 클래스로 선언할 수 있습니다. 다만, 주로 확장용인 클래스임을 명시하기 위해 사용합니다.

Q6: 추상 클래스는 인스턴스화 할 수 있나요?
A6: 아니요, 추상 클래스는 직접 객체를 생성할 수 없습니다. 반드시 서브클래스에서 상속받아 구체적인 클래스로 만들어야 합니다.

Q7: 추상 클래스 상속 시 주의할 점은?
A7: 서브클래스는 반드시 모든 추상 메서드를 구현해야 합니다. 그렇지 않으면 서브클래스도 추상 클래스가 되어야 합니다.

Q8: 추상 클래스와 인터페이스의 차이는 무엇인가요?
A8: 추상 클래스는 상태(필드)를 가질 수 있고, 일부 메서드는 구현할 수 있습니다. 인터페이스는 기본적으로 메서드 시그니처만 선언하며, 자바 8부터는 default 메서드를 가질 수 있지만 상태는 가질 수 없습니다. 또한, 클래스는 단일 상속만 가능하지만 인터페이스는 다중 구현이 가능합니다.

Q9: 추상 클래스의 생성자는 호출되나요?
A9: 예, 추상 클래스도 생성자를 가질 수 있으며, 서브클래스 객체 생성 시 추상 클래스 생성자는 자동으로 호출됩니다.

Q10: 언제 추상 클래스 대신 인터페이스를 사용해야 하나요?
A10: 클래스 간에 완전한 구현이 불필요하고 단지 규격(옵션)을 정의할 때는 인터페이스를 사용하고, 공통적인 구현과 상태를 공유할 필요가 있을 때는 추상 클래스를 사용하는 것이 일반적입니다.
자바에서 추상 클래스(Abstract Class)는 객체 지향 프로그래밍의 중요한 개념 중 하나로, 클래스의 일종입니다.

추상 클래스는 인스턴스를 생성할 수 없는 클래스이며, 주로 다른 클래스들이 상속받아 사용할 수 있는 기본적인 틀을 제공하는 역할을 합니다.

추상 클래스는 일반 클래스와 달리 하나 이상의 추상 메서드를 포함할 수 있으며, 이 메서드는 구현이 없는 메서드로, 서브 클래스에서 반드시 구현해야 합니다.

추상 클래스의 특징1. 인스턴스화 불가 : 추상 클래스는 직접 인스턴스를 생성할 수 없습니다.

즉, `new` 키워드를 사용하여 객체를 만들 수 없습니다.

이는 추상 클래스가 완전한 형태의 클래스가 아니기 때문입니다.

2. 추상 메서드 : 추상 클래스는 하나 이상의 추상 메서드를 가질 수 있습니다.

추상 메서드는 메서드의 선언만 있고, 본체(구현)는 없습니다.

서브 클래스는 이 메서드를 반드시 구현해야 하며, 이를 통해 서브 클래스가 특정 기능을 제공하도록 강제할 수 있습니다.

3. 일반 메서드와 필드 : 추상 클래스는 일반 메서드와 필드를 가질 수 있습니다.

즉, 추상 클래스는 추상 메서드뿐만 아니라 구현된 메서드와 상태(변수)를 포함할 수 있습니다.

이를 통해 서브 클래스에서 공통적으로 사용할 수 있는 기능을 제공할 수 있습니다.

4. 상속 : 추상 클래스는 다른 클래스에 의해 상속될 수 있습니다.

서브 클래스는 추상 클래스를 상속받아 그 기능을 확장하거나 구현할 수 있습니다.

추상 클래스의 사용 예추상 클래스는 주로 다음과 같은 상황에서 사용됩니다:- 공통 기능 제공 : 여러 클래스에서 공통적으로 사용되는 메서드나 필드를 정의하여 코드 중복을 줄이고, 유지보수를 용이하게 합니다.

- 강제성 부여 : 서브 클래스에서 특정 메서드를 반드시 구현하도록 강제함으로써, 일관된 인터페이스를 유지할 수 있습니다.

- 다형성 구현 : 추상 클래스를 통해 다양한 서브 클래스를 다룰 수 있는 통합된 인터페이스를 제공하여, 코드의 유연성을 높입니다.

예제 코드아래는 추상 클래스와 이를 상속받는 서브 클래스의 간단한 예제입니다.

```java// 추상 클래스 정의abstract class Animal { // 추상 메서드 abstract void sound(); // 일반 메서드 void eat() { System.out.println("This animal eats food."); }}// 서브 클래스 1class Dog extends Animal { @Override void sound() { System.out.println("Woof"); }}// 서브 클래스 2class Cat extends Animal { @Override void sound() { System.out.println("Meow"); }}// 메인 클래스public class Main { public static void main(String[] args) { Animal dog = new Dog(); dog.sound(); // 출력: Woof dog.eat(); // 출력: This animal eats food. Animal cat = new Cat(); cat.sound(); // 출력: Meow cat.eat(); // 출력: This animal eats food. }}```위의 예제에서 `Animal`은 추상 클래스이며, `sound()`라는 추상 메서드를 가지고 있습니다.

`Dog`와 `Cat` 클래스는 `Animal` 클래스를 상속받아 `sound()` 메서드를 구현합니다.

이를 통해 각 동물의 소리를 다르게 정의할 수 있습니다.

결론추상 클래스는 객체 지향 프로그래밍에서 중요한 역할을 하며, 코드의 재사용성과 유지보수성을 높이는 데 기여합니다.

이를 통해 개발자는 보다 구조적이고 체계적인 코드를 작성할 수 있으며, 다양한 객체를 다룰 수 있는 유연한 시스템을 구축할 수 있습니다.

작성자: 김하린 [비회원] | 작성일자: 1년 전 2024-09-05 03:56:56
조회수: 204 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.