반응형
추상클래스란?
추상 클래스는 인스턴스화 할 수 없는 클래스로 객체를 직접 생성할 수 없는 클래스를 말한다. 추상 클래스는 주로 다른 클래스에서 상속받아 사용되는 기복적 틀을 제공하기 위해 사용된다. 또한 구현되지 않은 추상 메소드를 포함할 수 있으며, 이는 자식 클래스에서 구현되어야 한다.
추상 클래스의 특징
- 인스턴스화할 수 없다
public abstract class Vehicle {
public void hello() {
System.out.println("나는 탈것이야");
}
public class VehicleTest {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle(); // Cannot instantiate the type Vehicle 컴파일 에러 발생
vehicle.hello();
}
}
- 추상 메소드를 가질 수 있다
public abstract class Vehicle {
abstract void hello();
}
// 이와 같이 추상 메서드를 정의하고 자식 클래스에서 정의하여 사용할 수 있다.
추상 클래스의 사용 예시
abstract class Animal {
// 추상 메소드: 자식 클래스에서 반드시 구현해야 함
abstract void makeSound();
// 일반 메소드: 자식 클래스에서 오버라이드할 수 있음(안해도 됨)
public void sleep() {
System.out.println("잠들어라!");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("멍멍");
}
}
class Main {
public static void main(String[] args) {
// Animal animal = new Animal(); // 오류: 추상 클래스는 객체를 생성할 수 없음
Animal dog = new Dog();
dog.makeSound(); // "멍멍"
dog.sleep(); // "잠들어라!"
}
}
추상 클래스와 인터페이스의 차이
구분 | 추상 클래스 (Abstract Class) | 인터페이스 (Interface) |
상속 | 단일 상속만 가능 | 다중 상속 가 |
메소드 구현 | 추상 메소드와 구현된 메소드 모두 가능 | 추상 메소드만 가능 (Java 8부터 default 메소드 가능) |
인스턴스 변수 | 인스턴스 변수를 가질 수 있음 | 인스턴스 변수를 가질 수 없음 (상수는 가능- static final ) |
생성자 | 가질 수 있음 | 가질 수 없음 |
반응형
'Back-end > JAVA' 카테고리의 다른 글
[JAVA] 런타임 메모리에 대해 알아보지(JVM) (0) | 2024.07.17 |
---|---|
[JAVA] 부동소수점에 대해 - 0.1 + 0.2 = 0.300...4? (0) | 2024.07.12 |
[JAVA] 싱글톤 패턴(Singleton pattern) 사용법과 장단점 (0) | 2024.07.09 |
[JAVA] 자바의 인터페이스(interface)란? 게임으로 알아보는 사용이유 (0) | 2024.07.04 |
[JAVA] 접근 제어자(public, protected, default, private) (0) | 2024.07.03 |