IT 개발/Java
[Java] 자바 - 추상메소드와 추상클래스
KADOSHOLY
2022. 6. 30. 15:39
반응형
자바 - 추상메소드와 추상클래스
자바에서 abstract키워드가 붙어 있는 메소드와 클래스를 각각 추상메소드, 추상클래스라고 합니다.
이번에는 자바의 상속과 함께 사용되는 추상메소드와 추상클래스에 대해서 알아보도록 하겠습니다.
목차
- 추상메소드와 추상클래스
- 추상클래스의 구현 및 장점
- 추상클래스 사용예제
1. 추상메소드와 추상클래스
1) 추상메소드
추상메소드(abstract method)는 메소드 이름 앞에 abstract 키워드가 붙은 메소드로, 메소드의 내용이 없이 선언만 되어 있는 메소드를 말합니다.
ex) abstract void setNumber(int number);
2) 추상클래스
추상클래스(abstract class)는 class 앞에 abstract 키워드가 붙은 클래스로, 일반적으로 추상메소드를 가진 클래스를 말하며 다음과 같은 특징을 가지고 있습니다.
ex) abstract class Person { ... }
- class 앞에 abstract 키워드가 있는 모든 클래스는 추상클래스로 인스턴스를 생성할 수 없습니다.
- 추상메소드를 가지고 있는 클래스는 모두 추상클래스가 됩니다.
- 추상클래스를 상속받은 자식클래스는 추상메소드를 오버라이드하여 해당 내용을 구현하여야 합니다. 만약 구현되지 않은 추상메소드가 하나라도 남아 있다면 그 클래스 역시 추상클래스가 됩니다.
2. 추상클래스의 구현 및 장점
1) 추상클래스의 구현
추상클래스를 상속받은 자식클래스에서 추상메소드를 오버라이드(override)하여 실행내용을 구현하는 것을 말합니다.
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) 실행결과
나는 댄서입니다
나는 가수입니다
반응형