ss__jae2
타닥타닥 IT
ss__jae2
전체 방문자
오늘
어제

Github

  • 타닥타닥 IT (179)
    • 웹개발 (86)
      • JAVA (23)
      • DBMS (6)
      • HTML (9)
      • CSS (7)
      • JavaScript (12)
      • JSP (14)
      • Spring (15)
    • FrontEnd (63)
      • HTML (5)
      • CSS (12)
      • JavaScript (16)
      • React.js (14)
      • Node.js (16)
    • API (5)
    • SQLD (21)
      • SQLD (1)
      • 1과목 데이터 모델링의 이해 (11)
      • 2과목 SQL 기본 및 활용 (9)
    • CS Study (4)
      • 네트워크 (4)

공지사항

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
ss__jae2

타닥타닥 IT

웹개발/JAVA

[JAVA] 추상클래스( abstract class )

2022. 1. 26. 00:05
반응형

1. 추상클래스( abstract class )

  • 클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 즉, 완성되지 못한 채로 남겨진 설계도를 말한다. 미완성 설계도로는 완성된 작품을 만들 수 없듯이 추상클래스로 인스턴스를 생성할 수 없다.
  • 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.( 확장 )
  • 추상클래스는 새로운 클래스를 작성하는 데 있어서 바탕이 되는 클래스로서 중요한 의미를 가진다.
  • 만약, 같은 크기의 Tv라도 기능의 차이에 따라 여러 종류의 모델이 있지만 사실 이들의 설계도는 아마 90% 정도 동일할 것이다. 서로 다른 여러 개의 설계도를 따로 그리는 것보다 이들의 공통부분만을 그린 미완성 설계도를 만들어 놓고 이 미완성 설계도를 이용해서 각각의 설계도를 완성하는 것이 효율적이다.
  • 추상클래스는 키워드 'abstract'를 붙이기만 하면 된다.
  • 이렇게 함으로써 이 클래스를 사용할 때 클래스 선언부의 abstract를 보고 이 클래스에는 추상클래스가 있으니 상속을 통해서 구현해야 한다는 것을 쉽게 알 수 있다.

    abstract class 클래스이름 {}

2. 추상메소드( abstract method )

  • 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추상메소드이다.
  • 즉, 설계를 해놓고 실제 수행될 내용은 작성하지 않았기 때문에 미완성 메소드인 것이다.
  • 메소드를 이와 같이 미완성 상태로 남겨놓은 이유는 메소드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상 클래스에서는 선언부만을 작성하고, 실제 내용은 상속받는 클래스에서 구현하도록 비워둔 것이다.
  • 추상메소드 역시 메소드 앞에 키워드 abstract를 붙여주고 추상메소드는 구현부가 없으므로 괄호 {} 대신 문장의 끝을 알리는 ; 을 적어준다.

3. 추상클래스 작성

  • 여러 클래스에서 공통적으로 사용될 수 있는 클래스를 바로 작성하기도 하고, 기존의 클래스의 공통적인 부분을 뽑아서 추상 클래스로 만들어 상속하는 경우도 있다.
  • 상속이 자손클래스를 만드는 데 조상클래스를 사용하는 것이라면, 반대로 추상화는 기존의 클래스의 공통부분을 뽑아내서 조상클래스를 만드는 것이라고 할 수 있다.

반응형
저작자표시 (새창열림)

'웹개발 > JAVA' 카테고리의 다른 글

[JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )  (0) 2022.01.27
[JAVA] 인터페이스( interface )  (0) 2022.01.26
[JAVA] 다형성( polymorphism )  (0) 2022.01.25
[JAVA] 제어자( modifier )  (0) 2022.01.24
[JAVA] 상속( inheritance ), 오버라이딩( overriding )  (0) 2022.01.20
    '웹개발/JAVA' 카테고리의 다른 글
    • [JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )
    • [JAVA] 인터페이스( interface )
    • [JAVA] 다형성( polymorphism )
    • [JAVA] 제어자( modifier )
    ss__jae2
    ss__jae2

    티스토리툴바