쌤리

추상 클래스, abstract class 본문

자바 JAVA/자바 기초

추상 클래스, abstract class

saml2l 2020. 4. 24. 20:35

추상 클래스란??? ABSTRACT CLASS

  • 동물을 좋아하는 나는 동물원으로 갔다. 동물원에는 호랑이도 있고, 토끼도 있고, 코알라도 있다.
  • 호랑이는 고기를 좋아하고 토끼는 당근을 좋아하고 코알라는 유칼립투스를 좋아한다.
  • 세 동물들은 각각 좋아하는 것은 다르지만 결국 먹는다는 행위는 같다. 

다른 예를 들어보자. 

 

  • 마이클 조던은 키가 198cm 이고  르브론 제임스는 206cm 이다. 마이클 조던은 6번의 우승을 이뤄냈지만 르브론 제임스는 6번의 준우승을 했다. 그러나 둘 모두 농구 선수이며 경기에서 농구 공을 잡고 슛을 쏜다는 공통점이 있다. 
  • 동물들의 먹는다 와 농구선수들이 슛을 쏜다 는 모두 공통 메서드이다.

아래부터 출처

 

https://limkydev.tistory.com/188

  • 객체를 직접 생성할 수 있는 클래스를 실체클래스라고 하며, 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상클래스라고 한다.
  • 추상클래스와 실체클래스는 상속적인 관계를 가지고 있다.

중요 포인트

 

  • 추상클래스는 실체클래스의 공통적인 부분(변수,메서드)를 추출해서 선언한 클래스이다
  • 2. 추상클래스는 객체를 생성할 수 없다! 아직은 실체성이 없고 구체적이지 않기 때문에!
  • 3. 추상클래스와 실체클래스는 어떤관계? 상속관계!

공통된 필드와 메서드를 통일할 목적

10명 개발자에게 자동차를 상속받아 각자만의 실체클래스를 구현하라고 주문해보자.

10명 개발자가 생각한 변수명과 메서드명은 제각기 다른 이름을 가지고 구현될 것이다. 이렇게 구현이 되면 문제가 있다. 만약, 수만줄에 이르는 코드에 A라는 자동차 실체클래스 객체를 선언하고 해당 객체의 필드와 메서드를 떡칠했다고 치자. 헌데, A자동차가 계약만료되고, B자동차를 새로 교체해야한다고 하자....응?

 

느낌이 오는가? 만약 B자동차의 변수와 메서드명이 A자동차와 동일하면 객체 인스턴스만 변경하면 되는데, 필드와 메서드를 전부다 체크해서 변경해줘야한다. 유지보수는 개뿔 이건 아예 새로 개발하는 느낌일 것이다. 따라서 추상클래스를 만든다! 즉, 추상클래스에서 미리 정의한 필드와 메서드가 있다면, 실체클래스는 추상클래스의 필드와 메서드명을 변경할 수 없고 무조건 해당 명명으로 구현해야한다. 따라서, 필드와 메서드 이름을 통일하여 유지보수성을 높이고 통일성을 유지할 수 있다.

 

 

 

 

 

 

'자바 JAVA > 자바 기초' 카테고리의 다른 글

순위 정렬, 랭킹 정렬  (2) 2020.04.26
Bubble Sort, 버블 정렬, 거품정렬  (0) 2020.04.26
클래스와 객체 Class & Object  (0) 2020.04.24
코드업 3019 풀이  (0) 2020.04.21
객체, 클래스  (0) 2020.04.16
Comments