목차
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.");
}
}
추상 클래스의 목적
- 공통된 기능 제공
- 구현 강제(추상 메서드)
- 다형성 지원(다형성: 같은 기능인데, 다른 결과를 도출할 수 있음)
- 코드 일관성 유지
'Programming > Java' 카테고리의 다른 글
Interface와 Abstract Class 차이 (0) | 2024.12.02 |
---|---|
JDK와 JRE (0) | 2024.10.29 |
SOLID, 객체 지향 설계 원칙 (0) | 2022.02.25 |
업캐스팅, 다운캐스팅 (0) | 2022.02.23 |
ArrayList vs LinkedList (0) | 2022.02.23 |