추상클래스가 대체 뭐임?
=>
클래스면 클래스지 추상클래스는 뭐임?
결론부터 말하면, A클래스, B클래스, C클래스가 있다고 치자
여기서 각 클래스 안에는 각자의 필드와 메서드가 있을 것이다.
추상클래스는 A클래스, B클래스, C클래스들 간에 비슷한 필드와 메서드를 공통적으로 추출해 만들어진 클래스이다.
음.. 예를 들어 키보드라는 클텍스트래스가 있다.
키보드를 만드는 제조사는 여러개이다.
A제조사, B제조사, C제조사는 각 제조사만의 스타일대로 키보드를 제작하고 소비자들에게 제품을 출시한다.
여기서 A제조사는 키보드를 누를 때마다 불빛이 들어온다.
B제조사는 키보드를 누를 때 딸깍 거리는 소리가 난다.
C제조사는 키보드를 누를 때 살짝만 눌러도 잘 눌린다.
여기서 이 키보드들 간에 공통점이 무엇인가
바로 키보드를 누른다. 라는 액션! 즉 메서드가 공통적이다.
그럼 이 메서드를 추출해서 추상 클래스 안에 두면된다
(키보드를 상속받아 탄생한, A키보드, B키보드,C키보드)
다른 예를 들어보겠다. 나의 얼굴과 너의 얼굴이 있다. 우리는 일반적으로
2개 귀, 2개 눈, 1개 입, 1개 코를 지니고 있다
느낌이 오는가? 공통적인 변수다.
왼쪽 눈, 오른쪽 눈, 왼쪽 귀, 오른쪽 귀, 입, 코 이변수들을 추상 클래스에 넣어버린다.
사람들은 웃는모습이 다르다 하지만 우리는 공통적으로 웃는다라는 액션을 하고 있다. 이는 공통적인 메서드다. 따라서 추상 클래스에 해당 메서드를 넣어버린다.
(인간을 상속받아 탄생한 '나'라는 클래스, '너'라는 클래스)
뭔가 느낌이 왔으면 좋다
실체클래스는 실체가 드러나는 클래스... 추상클래스는 실체클래스의 공통적인 부분을 추출해 어느정도 규격을 잡아놓은 추상적인 클래스이다.
그래서 실체클래스 실제 객체를 생성할 정도의 구체성을 가지는 반면
추상클래스는 아직 메서드와 내용이 추상적이기 때문에 객체를 생성할수 없게 만들었다.
이제 좀 더 개념적으로 있어보이게 정리하고 개념은 마치도록 하자.
객체를 직접 생성할 수 있는 클래스를 실체클래스라고 하는데, 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상클래스라고 한다. 여기서 추상클래스와 실체클래스는 상속적인 관계를 가지고 있다.
실체클래스 구현시 시간절약
실무적으로 생각해보자. 나는 SI개발자임
그런데 시간겁나없음
빨리 개발해야함
자동차라는 어마어마한 클래스를 일주일안에 구현해야함
그럼 설계부터 시작함
자동차는 바퀴가 있어야함
굴러가야함
느낌이 옴?
그런데 추상클래스 결국 만들어야되는거아님?=>너가안할 확률 많음
규격에 맞는 실체클래스 구현
아무리 자기 스타일대로 클래스를 구현한다고 해도 그것도 결국에 구현안에서 구현하는것을 허락하는것이지 규격도없이 아무렇게나 구현을 해서는 안된다.

https://limkydev.tistory.com/188
public abstract class 클래스명{
//필드
//생성자
//메서드
//추상메서드
}

