-
JAVA | 추상 클래스programming/JAVA 2020. 5. 26. 22:39
추상 클래스 란?
추상이란 실체 간에 공통되는 특성을 추출한 것이다.
ex) 원숭이/곤충/물고기 라는 실체에서 공통되는 특성을 추출해보면 동물이라는 공통점이 있다.
여기서 동물은 구체적인 실체라기보다는 실체들의(원숭이,곤충,물고기..) 공통되는 특성을 가지고 있는 추상적인 것 이라고 볼 수 있다.
"실체 클래스" 는 객체를 직접 생성할 수 있는 클래스를 의미한다.
실체 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 "추상 클래스"라고 한다.
실체 클래스 와 추상 클래스는 상속의 관계를 가지고 있다.
추상 클래스가 부모 이고 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성(필드,메소드) 을 물려받고, 추가적인 특성을 가질 수 있다.
*추상 클래스는 실체 클래스의 공통되는 특성을 추출해서 만들어진 것이기 때문에 객체를 직접 생성할수 없음!
실체 클래스 extends 뒤에만 올 수 있는 클래스이다.
Tiger는 실체 클래스 / Animal은 추상 클래스
class Tiger extends Animal {....}
추상 클래스의 용도
▶ 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적
▶ 실체 클래스를 작성할 때 시간 절약을 위해서 (추상 클래스로 설계 규격을 만드는 것이기 때문에 시간이 절약 된다.)
추상 클래스 선언
abstract 키워드를 붙이면 new 연산자를 이용해서 객체를 만들지 못하고 상속을 통해 자식 클래스만 만들수 있다.
public abstract class 클래스명 { //필드 //생성자 //메소드 }
new 연산자로 직접 생성자를 호출할 수는 없지만 자식 객체가 생성된다면 super를 통해 추상 클래스 객체를 생성하므로 추상 클래스도 생성자가 반드시 있어야 한다.
추상 클래스 - 추상 메소드와 오버라이딩
메소드의 선언(메소드 명)만 통일화 하고, 실행 내용은 실체 클래스마다 달라야 하는 경우에는 추상 클래스에 추상 메소드를 선언한다.
추상 메소드는 추상 클래스에서만 선언할 수 있는데, 메소드의 선언부만 있고 메소드 실행 내용인 중괄호 {} 가 없는 메소드를 말한다.추상 클래스를 설계할 때, 하위 클래스(실체 클래스) 가 반드시 실행 내용을 채우도록 강요하고 싶은 메소드가 있을 경우,
해당 메소드를 추상 메소드로 선언하면 된다.
이렇게 하면 자식 클래스(실체 클래스)는 반드시 추상 메소드를 재정의(오버라이딩) 해서 실행 내용을 작성 해야 한다.
하지 않으면 컴파일 에러가 발생! : 추상 메소드를 사용하는 이유!
public abstract class 클래스명 { //필드 //생성자 //메소드 public abstract void 추상메소드명(); //추상 메소드 선언 }
참고 : 이것이 자바다
'programming > JAVA' 카테고리의 다른 글
JAVA | 스레드(Thread) (0) 2020.05.30 JAVA | 인터페이스와 추상 클래스 (0) 2020.05.26 JAVA | 인터페이스(Interface) (0) 2020.05.26 JAVA | 상속(Inheritance) (0) 2020.05.21 JAVA | 접근 제한자 (public, protected, default, private) (0) 2020.05.21