본문 바로가기
개발/Java

[3주차] Java 중급 - 추상 클래스의 의미와 구현하는 방법

by 컴쏘 2023. 6. 25.
728x90

추상 클래스란?

// 예시
int add(int x, int y); // 선언 이렇게 선언만 하면 추상 메서드임 
int add(int x, int y) { } // 구현부가 있음, 추상 메서드 아님
  • 구현 코드 없이 메서드의 선언만 있는 추상 메서드 (abstract method)를 포함한 클래스
  • 메서드 선언 (declaration) : 반환타입, 메서드 이름, 매개변수로 구성
  • 메서드 정의 (definition) : 메서드 구현 (implementation)과 동일한 의미 구현부(body)를 가짐({ })
  • abstract 예약어를 사용
  • 추상 클래스는 new 할 수 없음 (인스턴스화 할 수 없음)
  • 추가적으로 추상클래스의 반대는 concrete class (구체적 클래스)이다.

추상 클래스 구현하기

  • 메서드에 구현 코드가 없으면 abstract로 선언
  • abstract로 선언된 메서드를 가진 클래스는 abstract로 선언
  • 모든 메서드가 구현된 클래스라도 abstract로 선언되면 추상클래스로 인스턴스화 할 수 없음
  • 추상 클래스의 추상 메서드는 하위 클래스가 상속하여 구현
  • 추상 클래스 내의 추상 메서드 : 하위 클래스가 구현해야 하는 메서드
  • 추상 클래스 내의 구현된 메서드 : 하위 클래스가 공통으로 사용하는 메서드 (필요에 따라 하위 클래스에서 재정의 함)

예시 구현하기)

그림상에서 이탤릭체(비스듬한 글씨)로 쓰여진 class는 추상 클래스, 해당 클래스 안의 메서드는 추상 메서드로 선언

 

Computer.java

 

하위 클래스가 정의해서 구현해야할 메서드는 추상 메서드로 선언

하위 클래스가 공통적으로 사용하는 메서드는 메서드 선언 및 정의 

package ch09;

public abstract class Computer {
	abstract void display();
	abstract void typing();
	
	public void turnOn() {
		System.out.println("전원을 켭니다.");
	}
	
	public void turnOff() {
		System.out.println("전원을 끕니다.");
	}
}

DeskTop.java

package ch09;

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.java

package ch09;

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

MyNoteBook.java

package ch09;

public class MyNoteBook extends NoteBook {
	@Override 
	void display() {
		System.out.println("MyNoteBook display");
	}
}

ComputerTest.java

package ch09;

public class ComputerTest {
	public static void main(String[] args) {
		Computer computer = new DeskTop();
		computer.display();
		computer.turnOff();
		
		NoteBook myNote = new MyNoteBook();
	}
}

결과


2023 KAKAO Tech Campus_BackEnd 필수 과정
Java 3주차 강의 정리 내용입니다.
728x90