컴퓨터공학 💻 도서관📚

Part2. 3-9 추상 클래스(abstract class) 구현하기 본문

✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습

Part2. 3-9 추상 클래스(abstract class) 구현하기

들판속초록풀 2025. 6. 6. 15:39

추상 클래스

 

  • 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스
  • 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성
  • 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ( { } )
  • 예) int add(int x, int y);      // 선언  (추상 메서드)
           int add(int x, int y) { }   // 구현부가 있음, 추상 메서드 아님

  • abstract 예약어를 사용
  • 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 )
    왜냐하면 만약에 new 해서 computer 클래스 인스턴스를 생성하고 display() 메서드를 호출을 하면
    display() 메서드에 대한 구현 코드가 없다. 실행될 부분이 없기에  추상 클래스를 new 할 수 없다.

추상 메서드를 만드는 이유

하위 클래스들이 공통으로 쓸 method는 구현해 놓고

이 클래스에서 구현하지 않을 얘들은  추상 method로 놓고 하위 클래스에게 그 책임을 위임한다

상위 클래스는 구현하지 않을 테니 상속 받는 님들이 알아서 너한테 맞게 구현해라 라는 뜻이다.

프레임워크를 사용할 때 어떤 클래스를 상속받으면 구현되어 있는 메서드도 있지만 구현이 안 되어 있는 부분도 많다. 

구현이 안 되어 있는 부분이 상속을 받아서 내가 구현을 하는 것이다.

추상 클래스상속을 위한 클래스이다. ( 이 클래스의 존재 목적 )


추상 클래스 구현하기

 

  • 메서드에  body부분이 없으면   abstract 로 선언한다 
  • abstract로 선언된 메서드를 가진  클래스abstract로 선언한다

  • 모든 메서드가 구현 된 클래스라도  abstract로 선언되면 추상 클래스이기에 인스턴스화 할 수 없다
    위와 같은 클래스의 의미:
    이 클래스에서 여러 가지 기능들을 구현했지만 이 기능들을 가지고 인스턴스화해서 쓸게 아니고
    이 클래스는 상속만을 하기 위한 클래스라는 것을 의미한다.


  • 추상 클래스의  추상 메서드는   하위 클래스가 상속 하여 구현한다
  • 추상 클래스 내의  추상 메서드하위 클래스가 구현해야 하는 메서드

  • 추상 클래스 내의 구현된 메서드 : 하위 클래스가 공통으로 사용하는 메서드  ( 필요에 따라 하위 클래스에서 재정의 함 )

추상클래스protected 이상 으로 선언해서
1. 참조 자료형으로 쓰거나

2. 상속해서 쓰거나  등등등

 

// 상위 클래스 Computer 클래스

public abstract class  Computer {   // 추상 클래스

	abstract void display();   // 추상 메서드
	abstract void typing();
	
	public void turnOn() {     // 구현된 메서드
		System.out.println("전원을 켭니다.");
	}
	
	public void turnOff() {
		System.out.println("전원을 끕니다.");
	}
}
 // 하위 클래스 DeskTop

public class DeskTop extends Computer{   // 추상 클래스 아님

	@Override     // 추상 메서드를 하위 클래스에서 정의 ( 재정의를 해서 사용 )
	void display() {
		System.out.println("DeskTop display");
	}

	@Override
	void typing() {
		System.out.println("DeskTop typing");
	}

	@Override     // 이미 구현되어 있었던 메서드를 재정의
	public void turnOff() {
		System.out.println("Desktop turnoff");
	}
}
// 하위 클래스 : NoteBook 클래스 :  추상 클래스는 상속을 위한 클래스

public abstract class NoteBook extends Computer{  // 추상 클래스

	@Override
	public void typing() {
		System.out.println("NoteBook typing");		
	}
}

 

 

 

이태릭체 ( 비스듬하게 생긴 글씨체 )

클래스 다이어그램에서 이태릭체로 되어 있는 클래스와 메서드는  추상 클래스, 추상 메서드이다.

 

Comments