추상클래스는 인스턴스화될 수 없는 클래스이다
abstract 키워드를 사용하여 선언한다
추상 클래스는 하나 이상의 추상 메서드를 가질 수 있다
// 추상 클래스 선언
abstract class Animal {
// 추상 메서드
abstract void makeSound();
// 일반 메서드
void eat() {
System.out.println("This animal is eating.");
}
}
// 추상 클래스를 상속받는 구체 클래스
class Dog extends Animal {
// 추상 메서드를 구현
@Override
void makeSound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
// 추상 클래스는 인스턴스화할 수 없음
// Animal a = new Animal(); // 컴파일 오류 발생
// 추상 클래스를 상속받은 클래스는 인스턴스화할 수 있음
Dog dog = new Dog();
dog.makeSound(); // 출력: Bark
dog.eat(); // 출력: This animal is eating.
}
}
추상 클래스를 사용하는 이유 :
추상 클래스는 서브클래스에서 공통적으로 사용될 수 있는 메서드와 필드를 한 곳에 모아 둘 수 있다
코드의 중복을 줄이고, 유지 보수를 쉽게 할 수 있다
추상 클래스는 추상 메서드를 정의할 수 있으며 상속 받는 서브클래스는 특정 기능을 반드시
구현하도록 강제할 수 있다
추상 클래스는 다형성을 지원한다
추상 클래스와 인터페이스 차이점 :
목적 :
추상 클래스 : 공통된 기본 기능을 제공하고, 일부 메서드의 구현을 강제한다.
인터페이스 : 클래스가 구현해야 할 메서드의 설계를 정의한다
키워드 :
추상 클래스 : abstract
// 추상 클래스 예시
abstract class Animal {
// 구현된 메서드
void eat() {
System.out.println("This animal is eating.")
인터페이스 : interface
// 인터페이스 예시
interface Movable {
void move(); // 추상 메서드
}
메서드 :
추상 클래스 : 추상 메서드와 구현된 메서드 모두를 가질 수 있다
// 추상 메서드
abstract void makeSound();
인터페이스 : 상수만 가질 수 있으며, 암묵적으로 pubilc static final
상속 :
추상 클래스 : 단일 상속만 가능하다
인터페이스 : 다중 상속이 가능하다
생성자 :
추상 클래스 : 생성자를 가질 수 있다 상속 받는 클래스는 추상 클래스의 생성자를 호출할 수 있다.
인터페이스 : 생성자를 가질 수 없다.
'Java' 카테고리의 다른 글
2024년 6월 11일 KH 교육 전 Java 예습 (예외 처리) (0) | 2024.06.07 |
---|---|
2024년 6월 11일 KH 교육 전 Java 예습 마무리 : 상속, 생성자 (0) | 2024.06.07 |
2024년 6월 11일 KH 교육 전 Java 예습 : static, interface, (1) | 2024.06.06 |
2024년 6월 11일 KH 교육 전 JAVA 예습 : 뤼튼 활용하기(생성자, 변수 이름, this) (0) | 2024.06.06 |
2024년 6월 11일 KH 교육 전 Java 예습 : 용어 및 내용 정리 (0) | 2024.06.05 |