-
(JAVA / 자바) 추상클래스(abstract)언어 공부/자바 공부 2022. 6. 25. 20:42
안녕하세요~ 코딩하는 코알못 코메인입니다.
추상클래스에대해 알아보겠다.
추상클래스란?
여러 실체클래스에서 공통 된 부분을 따로 빼서 클래스로 구현한 것이 추상클래스이다. 여기서 구현이라 했지만 추상이란 이름처럼 공통된 용기만 만들어두는 것이다. 내용물은 해당 클래스를 상속한 자식 클래스에서 오버라이드해서 구현해주면 된다.
위 설명만으로 추상클래스가 무엇인지 이해를 했다면 좋겠지만, 그렇지 못 하는 필자같은 경우가 있을 수 있기에 예를 들어 설명해 보겠다.
책이 세권이 있다. A책, B책, C책.
그렇다면 여기서 실체클래스는 Abook 클래스와, Bbook 클래스, Cbook 클래스가 있을 것이다.
여기서 각자 클래스를 구현하게 된다면 A책, B책, C책을 구성하는 모든 부분을 메소드로 각자 클래스에 나누어서 구현하게 될 것이다.
그렇게 하면 공통적인 부분이 있을 것이다. 책들이 가진 고통적인 부분. 제목, 지은지, 출판사, 목차 등이 있을 것이다. 이런 공통 적인 부분을 추상클래스에 추상메소드로 만들어 구현하고, 각 A, B, C book 클래스에서 해당 추상클래스를 상속받아 메소드를 오버라이드해서 내용물을 채워주는 것이다.(제일 쉬운 이해 방법은 직접 코드를 구현 해 보는 것이다.)
추상클래스의 특징
- 추상적이고, 구체적이지 않기때문에 객체로 생성이 불가능하다.
- 필드, 일반메소드, 추상메소드로 구성이 가능하다.
- 유지보수성이 높아진다.
- 틀은 정해져 있으니 내용물만 적어 넣으면 되기에 시간이 절약된다.
- abstract를 class 앞에 붙여서 추상클래스를 만든다.(추상메소드도 void 앞에 붙이면 된다.)
- 실체 클래스에서 추상메소드를 extends로 상속받는다. 메소드는 Override해서 구현해준다.
구현
추상클래스
public abstract class Book { public int price; public void Category() { System.out.println("소설"); } public abstract void Name(); }
실체 클래스
public class Abook extends Book{ @Override public void Name() { System.out.println("불편한 편의점"); } }
public class Bbook extends Book{ @Override public void Name() { System.out.println("까칠한 재석이가 사라졌다."); } }
메인 클래스
public class abstract_example { public static void main(String[] args) { Abook abook = new Abook(); Bbook bbook = new Bbook(); System.out.print("Abook 제목 : "); abook.Name(); System.out.print("Bbook 제목 : "); bbook.Name(); } }
결과
추상 클래스에대해 알아보았습니다.
보시는 분들에게 도움이 되셧으면 좋겠고, 만약 보시고 틀린 점이나 추가로 정보를 주고 싶은 분이 있다면 거리낌 없이 댓글로 남겨주시면 감사히 새겨 듣겠습니다.
'언어 공부 > 자바 공부' 카테고리의 다른 글
(JAVA / 자바) EOF 에러 해결 방법 (0) 2022.02.19 (JAVA / 자바) Scanner 와 Bufferedreader (0) 2022.01.23