IT 개발/Java

[Java] 자바 - 추상메소드와 추상클래스

KADOSHOLY 2022. 6. 30. 15:39
반응형

 

자바 - 추상메소드와 추상클래스

 

자바-추상메소드와 추상클래스

 

 

자바에서 abstract키워드가 붙어 있는 메소드와 클래스를 각각 추상메소드, 추상클래스라고 합니다.

이번에는 자바의 상속과 함께 사용되는 추상메소드와 추상클래스에 대해서 알아보도록 하겠습니다.

 

 

   목차

  1. 추상메소드와 추상클래스
  2. 추상클래스의 구현 및 장점
  3. 추상클래스 사용예제

 

 

1. 추상메소드와 추상클래스

 

1) 추상메소드

 

추상메소드(abstract method)는 메소드 이름 앞에 abstract 키워드가 붙은 메소드로, 메소드의 내용이 없이 선언만 되어 있는 메소드를 말합니다. 

    ex) abstract void setNumber(int number);

 

 

2) 추상클래스 

 

추상클래스(abstract class)class 앞에 abstract 키워드가 붙은 클래스로, 일반적으로 추상메소드를 가진 클래스를 말하며 다음과 같은 특징을 가지고 있습니다. 

    ex) abstract class Person { ... }

  1. class 앞에 abstract 키워드가 있는 모든 클래스는 추상클래스로 인스턴스를 생성할 수 없습니다. 
  2. 추상메소드를 가지고 있는 클래스는 모두 추상클래스가 됩니다. 
  3. 추상클래스를 상속받은 자식클래스는 추상메소드를 오버라이드하여 해당 내용을 구현하여야 합니다. 만약 구현되지 않은 추상메소드가 하나라도 남아 있다면 그 클래스 역시 추상클래스가 됩니다. 

 

 

 

2. 추상클래스의 구현 및 장점

 

1) 추상클래스의 구현

 

추상클래스를 상속받은 자식클래스에서 추상메소드를 오버라이드(override)하여 실행내용을 구현하는 것을 말합니다. 

 

 

2) 추상클래스의 장점

  1. 추상클래스를 상속받은 자식클래스는 추상메소드를 자식클래스의 특징에 맞게 구현할 수 있습니다. 
  2. 추상클래스를 상속받은 자식클래스는 추상메소드를 모두 구현하여야 인스턴스를 생성할 수 있으므로 구현해야 될 메소드를 명시적으로 전달할 수 있습니다. 

 

 

 

3. 추상클래스 사용 예제

 

1) 부모클래스(추상클래스) 및 자식클래스 정의

abstract public class Person {		// 추상클래스
	abstract public void speak();	// 추상메소드
}


class Dancer extends Person {		// 추상클래스 Person 상속

	@Override
	public void speak() {			// 오버라이드
		System.out.println("나는 댄서입니다");
	}
}


class Singer extends Person {		// 추상클래스 Person 상속

	@Override
	public void speak() {			// 오버라이드
		System.out.println("나는 가수입니다");
	}
}

 

 

2) 객체 생성 및 실행

public class HelloWorld {
	public static void main(String[] args) {
		
		Person p1 = new Dancer();
		Person p2 = new Singer();
		
		p1.speak();
		p2.speak();
	}
}

 

 

3) 실행결과

나는 댄서입니다
나는 가수입니다

 

반응형