추상클래스란? 클래스의 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 미완성 설계도란, 단어의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.
추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느 정도 틀을 갖춘 상태에서 시작하는 것이 나을 것이다.
추상클래스는 abstract를 붙이기만 하면 된다. 이렇게 함으로써 이 클래스르르 사용할 때, 클래스 선언부의 abstract를 보고 이 클래스에는 추상메서드가 있으니 상속을 통해서 구현해주어야 한다는 것을 쉽게 알 수 있다!
추상메서드란? 메서드는 선언부와 구현부로 구성되어 있다. 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상 메서드이다. 설계만 해 놓고 실제 수행될 내용은 작성하지 않았기 때문에 미완성 메서드인 것이다. 메서드를 이렇게 미완성 상태로 남겨 놓는 이유는 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상 클래스에서는 선언부만 작성하고, 주석을 덧붙여 어떤 기능을 수행할 목적으로 작성되었는지 알려 주고, 실제 내용은 상속받는 클래스에서 구현하도록 비워 두는 것이다. 그래서 추상클래스를 상속받는 자손 클래스는 조상의 추상 메서드를 상황에 맞게 적절히 구현해주어야 한다. 추상메서드 역시 클래스 앞에 키워드 avstract를 앞에 붙여 주고, 추상메서드는 구현부가 없으므로 괄호 ( {} ) 대신 문장의 끝을 알려주는 (' ; ' 세미콜론)을 적어주면 된다!
'Java' 카테고리의 다른 글
Java 31. HashSet (0) | 2023.04.03 |
---|---|
Java 30. Map collection (0) | 2023.04.02 |
Java 28. Serialization- ObjectInputStream, ObjectOutputStream (직렬화, 역직렬화) (0) | 2023.03.30 |
Java 27. 입출력 스트림 IO Stream (Input Stream, Output Stream) 연습 (0) | 2023.03.29 |
Java26. List 컬렉션 리스트의 특징 (ArrayList, Vector, LinkeList) (0) | 2023.03.28 |