본문 바로가기

JAVA/JAVA

자바 추상메소드 abstract 관련 설명

반응형

추상메소드


abstract (메소드 앞에 붙임)

: 자식들의 메소드를 일반화 시키지 못함(각기 다른 방법이 있기 때문에) ex. 도형계산 (원, 삼각, 사각 등등)

지금은 정의 할 수 없어서 메소드를 예전에는 빈칸을 해놨지만 지금은

미래의 자식들에게 재정의 해야만 한다는 책임(강제성)을 부여


미래에 생성될 자식클래스들이 공통으로 가져야 할 속성과 동작들을 미리 정의하여 일반화하여

부모클래스를 정의 할 수 있다.



미래에 이차원 도형들이 가져야 할 속성과 동작들을 모아서 일반화 시키고자 한다.

모든 이차원 도형은 x,y 좌표와 면적 cir, 둘레 ext의 정보를 가지며

또, 모든 도형은 면적을 계산하는 동작calcCir()과 둘레를 계산하는 동작 calcExt()을 가지게 하고자 한다.

그런데 이시점 즉 Shape클래스 정의하는 시점에서 calcCir()와 calcExt() 메소드의 body를 구체화 할 수 없다.


미래에 만들어질 도형이 원, 사각형, 삼각형인지에 따라 각각 계산하는 방식이 다르기 때문이다.

이럴때 메소드의 body을 적지 않고 메소드 선언부(메소드 머리통)만 있게 하고

메소드명 앞에 abstract 키워드를 붙여 추상 메소드로 만든다.


또한, 클래스가 추상메소드를 한개라도 가지고 있다면 그 클래스는 추상클래스가 되어야 한다.


또, 어떤 클래스가 추상클래스로 부터 상속 받았다면 반드시 모든 추상메소드를 자신에게 맞게 재정의 해야한다.


==> 추상클래스는 객체화 될 수 없다!!

반응형