본문 바로가기

Java/Java 문법

[Java] 추상 클래스, 추상 메서드 (abstract)

728x90
반응형

추상 클래스 (abstract class)

 

abstract 키워드를 사용하여 클래스를 선언하면 해당 클래스로는 객체를 생성하는 것이 불가능하다.

 

abstract을 통해서 해당 단계에서 구현할 내용이 없을 때 구현 없이 클래스의 구조만을 선언하는 것이 가능하다.

 

추상 클래스는 해당 클래스가 아직 미완성이거나 상속을 위해서 빈 클래스가 필요할 때 사용된다.

 

abstract class Shape {
    // 빈 추상 클래스
}

 

 

 

 

 

 

 

 

추상 메서드 (abstract method)

 

추상 메서드는 추상 클래스안에 선언할 수 있는 메서드로 정의가 없고 선언만 되어 있다.

 

추상 메서드를 포함한 클래스는 하위 클래스에서 반드시 이 추상 메서드를 오버라이딩(정의)해주어야 한다.

 

abstract class Animal {
    abstract void makeSound();
    public void eat() {
        System.out.println("This animal is eating.");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Bark");
    }
}

class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("Meow");
    }
}

 

 

 

추상 메서드에는 강제성도 동반되는데 만약 아래 코드처럼 오버라이딩을 하지 않았다면 이는 컴파일이 불가능하다.

 

abstract class Animal {
    public void eat() {
        System.out.println("This animal is eating.");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Bark");
    }
}

class Cat extends Animal {
    // 실수로 makeSound()를 빠뜨렸다고 가정
}

 

 

 

 

728x90
반응형