추상 클래스는 추상 메소드가 하나라도 존재하는 클래스로 extends 키워드를 사용하며 다중 상속이 불가능하다
상속을 통한 기능 확장 또는 공통 기능을 하위 클래스에서 재사용할 때 유용하다
기본적인 동작을 제공하면서 세부 동작은 하위 클래스가 정의하도록 강제한다
abstract class Vehicle {
void startEngine() {
System.out.println("엔진을 켭니다");
}
abstract void move(); // 이동 방법은 탈것마다 다르니 추상 메소드로 정의
}
class Car extends Vehicle {
@Override
void move() {
System.out.println("도로를 따라 달립니다");
}
}
class Boat extends Vehicle {
@Override
void move() {
System.out.println("물을 따라 떠다닙니다");
}
}
인터페이스는 클래스 간 공통된 동작을 정의하고 싶을 때 사용하며 implements 키워드로 다중 상속이 가능하다
기능을 약속하고 강제하는 용도에 적합하다.
interface Workable {
void work(); // 일하는 방식은 클래스마다 다르게 정의
}
class Developer implements Workable {
@Override
public void work() {
System.out.println("코드를 작성합니다");
}
}
class Designer implements Workable {
@Override
public void work() {
System.out.println("디자인을 합니다");
}
}
Thinkable, Reportable 등 여러 인터페이스를 구현할 수 있다
[자바] JVM 구조 (0) | 2025.03.27 |
---|---|
[자바] Collections API : TreeMap (0) | 2024.10.22 |
[Java] Reflection (0) | 2024.01.06 |
[Java] Exception, try-catch-finally, try-with-resources (0) | 2023.12.24 |
[자바] 이팩티브자바 : 2. 생성자에 매개변수가 많다면 빌더를 고려해라 (0) | 2023.10.17 |