봉봉의 개인 블로그

2017-07-31-E(추상 클래스와 추상 메서드) 본문

학원에서 배운것들/TEA - E

2017-07-31-E(추상 클래스와 추상 메서드)

봉봉이네 2017. 7. 31. 09:14

1) 추상메서드란

"추상" 사전적 의미로 "여러가지 사물이나 개념에 공통되는 특성이나 속성따위를 추출하여 파악하는 작용"이라는 의미이다.

추상화 : 클래스 간의 공통점을 찾아내서 공통의 부모를 설계하는 작업

구체화 : 상속을 통해 클래스를 설계 , 확장하는 작업

여러객체에 공동되는 사항을 추출하여 부모 클래스에 선언 및 구현을 하고 자식 클래스에는 특징을 구현하여 기능을 확장한다. 이 내용만 보면 상속의 개념과 동일하게 보일 것이다. 추상 클래스는 단순 기능 확장에 개별의 표준화 정도를 올려준다. 아래 내용에서 그 이유를 살펴 보겠다.


2) 추상 메서드를 선언하는 이유

설계자가 특정 메서드를 각 클래스 별로 재구현을 원하지만 부모클래스에서 일반 메서드로 구현하면 자식 클래스에서 구현을 하지 않는 경우가 발생할 수 있다. 이런 메서드를 추상 메서드로 선언하면 자식 클래스는 재구현을 강요받느다.


3) 추상클래스의 장점

1. 부모클래스에서 공통 부분을 구현과 설계가 완료되면 자식 클래스에서 상속받아 기능을 확장시 이롭다.

2. 자식클래스에서 추상메서드를 반드시 구현하도록 강요한다. 이는 프로그램의 표준화 정도를 높인다.

3. 공통 사항이 한곳에서 관리되어 개발 및 유지보수가 용이하다.


4) 추상 메서드 선언 방법

추상클래스 및 추상 메서드를 선언하는 방법은 Class, return type 앞에 abstract를 선언해 주면 된다. 그리고 추상 메서드에서 주석을 사용해서 메서드의 기능을 설명을 기입합니다.

1
2
3
4
abstract class 클래스명{
//어떤 기능을 수행할지 설명 기입
abstract void 메서드명();
}
cs

비고)추상 메서드를 포함하지 않아도 abstract class로 선언하면 이는 추상 클래스로 인지된다. 즉, 상속을 통해 인스턴스를 생성해야 한다.


5) 추상 클래스 생성 방법

추상클래스는 아직 구현되지 않는 기능을 포함한 클래스이다. 미 구현된 클래스는 인스턴스화 시킬수 없다. 다른 클래스에서 추상클래스를 상속하여 미 구현된 메서드를 오버라이딩하여 재구현하고 자식 클래스를 인스턴스화 하여 사용해야한다.

1
2
3
추상클래스 c = new 자식클래스();
or
자식클래스 c = new 자식클래스();
cs


6) 추상 클래스 설계 및 구현

택시와 버스는 사람을 목적지 까지 운송해주는 운송수단이다. 즉, 운송수단 객체를 추상 클래스로 선언하고 이를 택시 객체와 버스 객체에서 상속받아 필요에 맞게 기능을 재구현 하도록 하겠다.

운송수단(부모클래스)

탑승하다 : 선언 및 기능구현

이동하다 : 선언

교통비 지불하다 : 선언

택시(자식클래스)

이동하다 : 재구현(목적지에 도착하다)

교통비 지불하다 : 재구현(이동거리 따른 요금을 지불하다)

기타 기능 : 선언 및 구현

버스(자식클래스)

이동하다 : 재구현(목적지 근처에 정류장에 도착하다)

교통비 지불하다 : 재구현(승차 요금을 지불하다)

기타 기능 : 선언 및 구현

설계자는 자식클래스에서 이동하는 방법과 교통비 지불 방법을 클래스 별 특성에 맞게 재 구현을 원할 경우 두 기능을 추상 메서드로 선언하고 자식클래스에서 재구현하도록 설계하면된다.


Comments