[Java] 추상 클래스 & 추상 메서드

정석·2024년 2월 1일

Java

목록 보기
33/39
post-thumbnail

김영한의 자바 강의를 듣고 정리한 내용입니다.

추상 클래스란?

이전 글의 Animal 클래스(부모 클래스)와 같이 생성되면 안되는 클래스를 의미한다. 인스턴스는 존재하지 않고 상속 목적으로만 사용된다.

아래와 같이 abstract 라는 키워드를 클래스 앞에 선언하고 사용한다.

abstract class AbstractParent{
	...
}

추상 메서드란?

추상 클래스처럼 abstract 를 붙여주며 선언해야 한다. 메서드의 바디는 존재하지 않으며 단지 메서드의 형태만 제공한다. 따라서 추상 메서드는 상속 받는 자식 클래스가 반드시! 오버라이딩 하여 사용해야 한다.

또한 추상메서드가 하나라도 존재하면 해당 클래스를 추상 클래스로 바꿔야 한다.

  • 부모 클래스
abstract class AbstractParent {
	public abstract void sound(); // 추상메서드 선언
    
    public void move() {
    	System.out.println("동물이 움직입니다."); // 일반적인 메서드
	}
}   
  • 자식 클래스
public class Dog extends AbstractParent {
	@Override
    public void sound() {
    	System.out.println("멍멍");
    }
}   
  • 메인 클래스
public class Main {
	public static void main(String[] args) {
    	
        Dog dog = new Dog();
        
        soundAnimal(dog);
    }
    
    private static void soundAnimal(AbstractParent animal) {
    	animal.sound();
    }
}
멍멍

근데 만약 추상 클래스의 모든 메서드가 추상 메서드라면?

그걸 인터페이스라고 한다.

0개의 댓글