추상클래스
: 구현부가 없는 메서드( { } 부분이 없는 메서드)
(미완성설계도로 객체를 만들기 위해서는 구체적인 설계도를 토대로 만드는데, 추상클래스는 없기 때문에 인스턴스 만들지 못함)
① 다른 클래스 작성에 도움을 주고, 상속을 통해 자손클래스에서 추상메서드를 완성시킨다.
추상클래스에서는 메서드가 완성되어 있지 않기 때문에 인스턴스를 만들지 못한다.
abstract 리턴타입 메서드이름 (); (+ {} 가 없음)
② 추상클래스로부터 상속받은 자손클래스가 추상메서드를 완성시켜야하는데, 자손클래스에서도 완성시키지 못하면 자손클래스도 추상클래스로 지정해야한다.
* 자손클래스에서 오버라이딩으로 추상클래스의 빈 메서드를 변경하면 되지만 굳이 abstract 로 추상메서드 선언하는 이유로는 자손클래스에서 추상메서드를 반드시 구현하도록 '강요'하기 위해서이다.
- 장점,
① 관리가 용이( 각 메서드를 변경하는 것보다 조상 클래스에서 변경하면 자손도 자동으로 변경되기 때문에)
② 코드의 중복제거 (자손에 같은 코드를 조상이 묶어서 관리)
③ 추상화된 코드는 변경에 유리(정해지지 않았으니까)
public class abstractTest {
public static void main(String[] args) {
iPhone ip = new iphoneMini(); //조상 참조변수 자손 객체타입가리킴(다형성)
ip.phoneSize(); // "131.5*7.4*64.2"
ip.phonePixel(); // "476ppi"
}
}
abstract class iPhone {
abstract void phoneSize(); // 구현부 없는({ })추상메서드
abstract void phonePixel(); // 구현부 없는({ })추상메서드
}
class iphoneMini extends iPhone {
void phoneSize() { System.out.println("131.5*7.4*64.2"); } //자손에서 완성메서드
void phonePixel() { System.out.println("476ppi"); }
}
참고 : 자바의정석(남궁성)
'JAVA' 카테고리의 다른 글
JAVA_예외처리 (0) | 2021.08.03 |
---|---|
JAVA_인터페이스 (0) | 2021.08.02 |
JAVA_다형성 (0) | 2021.08.01 |
JAVA_제어자 (0) | 2021.07.31 |
JAVA_Pakage와 import (0) | 2021.07.31 |
댓글