Java

2024년 6월 11일 KH 교육 전 Java 예습 추상클래스, static 비교

최종군 2024. 6. 7. 06:39

 

추상클래스는 인스턴스화될 수 없는 클래스이다

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 

 

상속 :  

추상 클래스 : 단일 상속만 가능하다 

인터페이스 : 다중 상속이 가능하다 

 

생성자 :

추상 클래스 : 생성자를 가질 수 있다 상속 받는 클래스는 추상 클래스의 생성자를 호출할 수 있다. 

인터페이스 : 생성자를 가질 수 없다.