Backend/JAVA-자바
JAVA 9. 추상클래스(Abstract Class)
사랑짱
2021. 6. 16. 18:17
◆ 추상(Abstract)이란?
- 실체들 간에 공통되는 특성을 추출하는 것(like 개요, 핵심)
( Ex. 새, 물고기, 호랑이 --> 동물(추상) )
◆ 추상클래스(Abstract Class)란?
- 객체(실체클래스)들의 공통되는 필드와 메소드를 정의한 클래스 -> 실체클래스의 부모 역할
- 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 클래스
(추상메소드 없이 abstract로 정의된 경우, 상속만을 위해 만든 추상클래스이다!!)
- 인스턴스 생성이 불가(But, 자식 객체가 생성될 때 super( ) 키워드를 통해 부모객체도 함께 생성)
※ 실체클래스(concrete class) : 객체를 직접 생성할 수 있는 클래스
◆ 추상클래스의 구성멤버
클래스의 구성멤버와 동일(필드, 생성자, 메소드)하나, 추상메소드가 포함된다.
※ 추상메소드란?
- 하위클래스가 반드시 실행내용을 채워야 하는 메소드
- 메소드 선언만 통일하고 실행내용(구현부)는 객체마다 다른 메소드
- 추상메소드는 접근제한자가 생략되어도 public 접근제한자를 갖는다!!
◆ 추상클래스의 사용목적
- 실체 클래스들의 공통된 필드와 메소드의 이름을 통일/규격화(강제성 有)
(추상 메소드를 구현하지 않으면 자식클래스 또한 추상클래스가 되니까!)
- 실체 클래스를 작성할 때 소요되는 시간을 절약
- 상속받은 기능을 확장하여 “구체화” -> 다형성
◆ 추상메소드와 오버라이딩
메소드 이름이 동일하지만, 실행 내용이 실체 클래스마다 다른 경우
추상메소드를 상속받아 오버라이딩을 한다. 이것이 추상클래스의 사용목적(다형성)이다!
※ 추상메소드 구현 방법
1. 상속받은 추상클래스의 추상메소드를 상속
2. 추상메소드의 구현부(메소드의 실행 내용)를 작성하여 Overrideing