반응형

자바 추상 클래스

  추상 클래스는 하나 이상의 추상 메소드를 포함한 클래스를 말합니다. 추상 클래스는 생성 시 클래스명 앞에 'abstract'라는 키워드를 붙여 해당 클래스가 추상 클래스임을 나타냅니다. 추상 클래스의 기본 조건이 추상 메소드를 하나 이상 포함하는 것이라고 했는데 추상 메소드도 마찬가지로 리턴 타입 앞에서 abstract를 붙여 추상 메소드임을 나타냅니다.

public abstract class 클래스명 {
	
    public abstract void 메소드명(); // 구현부({})는 작성하지 않고 남겨둡니다.
    
}

추상 클래스와 추상 메소드는 위의 코드처럼 작성합니다.

// 추상클래스
public abstract class Animal {
	
	public abstract void move();
	
}

// 위의 추상클래스 Animal을 구현한 Man 클래스
class Man extends Animal {
	
	@Override
	public void move() {
		System.out.println("두 발로 이동합니다.");
	}
}

// 위의 추상클래스 Animal을 구현한 Bird 클래스
class Bird extends Animal {
	
	@Override
	public void move() {
		System.out.println("날아서 이동합니다.");
	}
}

위 코드를 보면 추상 클래스 하나와 추상 클래스를 상속받은 두 개의 클래스가 있습니다. 동물은 모두 이동을 하지만 이동하는 방법에는 차이가 있습니다. 사람은 두 발로 걸어서 이동하고 새는 날아서 이동하지만 둘 다 '이동' 한다는 것은 다르지 않기 때문에 추상 클래스 Animal에서 추상 메소드 move()를 선언하여 Man과 Bird 클래스가 상속받아 클래스에 맞게 오버라이딩을 해 준 것입니다.

상속을 받으면 부모 클래스가 갖고 있는 추상 메소드를 반드시 오버라이딩 해야 합니다.

추상 클래스를 상속받은 클래스는 부모 클래스가 갖고 있는 추상 메소드를 받드시 오버라이딩 해야 합니다. 그렇지 않으면 위의 이미지 17번째 줄처럼 클래스명에 빨간줄이 생기면서 오류가 발생하는 것을 확인할 수 있습니다.

반응형

'Java > Java 객체 지향' 카테고리의 다른 글

[Java] DTO란?  (0) 2022.02.08
[Java] 자바 MySQL 연동  (0) 2021.05.13
[Java] 데이터 베이스를 연동한 DButil 클래스 만들기  (0) 2021.01.05
[Java] 인터페이스(Interface)  (0) 2020.12.28

+ Recent posts