JAVA_추상클래스(abstract class)

호근·2022년 12월 11일
0

java

목록 보기
23/35

추상클래스란?

미완성된 클래스를 말한다.

상속받는 자식클래스에게 완성을 맡긴다고 생각하자.

크기가 다른 TV를 만든다고 가정하면,
각 TV마다 공통적으로 가지고 있는 부분을 사전에 만들어 추상클래스로 선언한 뒤 각 TV에 상속시켜 해당 클래스에서 완성시켜주면 더 효율적일 것이다.

추상클래스 Syntax

abstract class 클래스이름 {
	...
}

추상메서드란?

일반적으로 메서드는 선언부와 구현부가 존재한다.
추상메서드는 선언부만 작성하고 구현부는 작성하지 않는다.

즉, 미완성 메서드인것이다.
메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상 클래스에서는 선언부만 작성하고,
자손클래스에서는 상속받은 추상메서드를 구체적으로 구현한다.

추상메서드 Syntax

/* 주석을 통해 어떤 기능을 수행할 목적으로 작성된것인지 설명한다.

abstract 리턴타입 메서드이름();

코드

추상 클래스

	abstract class Player{
		boolean pause; // 일시정지 상태저장 변수
		int currentPos; // 현재 Play되고있는 위치를 저장하는 변수
		
		public Player() {
			pause = false;
			currentPos = 0;
		}
		
		
		/** pos 에서 재생을 시작하는 기능이 수행되도록 작성해야한다.**/
		abstract void paly(int pos);
		/** 재생을 즉시 멈추는 기능을 수행하도록 작성되어야한다. **/
		abstract void stop();
		
		void play() {
			paly(currentPos); // 추상메서드를 사용할 수 있다.
		}
		
		void pause() {
			if(pause) {
				pause = false;
				play();
			} else {
				pause = true;
				stop();
			}
		}
	}

추상클래스를 상속받은 자식클래스.
추상클래스에서 선언된 메서드들을 오버라이드 하지 않으면 오류 발생한다.

	class CDPlayer extends Player{

		@Override
		void paly(int pos) {

		}

		@Override
		void stop() {
			
		}
		
		int currentTrack; // 현재 재생중인 트랙
		void nextTrack() {
			currentTrack ++;
		}
		
		void preTrack() {
			if(currentTrack > 1) {
				currentTrack --;
			}
		}
	}
	
profile
22.11.28 ~

0개의 댓글