본문 바로가기
JAVA

JAVA_추상화

by haheaven 2021. 8. 1.

 

추상클래스

 

: 구현부가 없는 메서드( { } 부분이 없는 메서드)

(미완성설계도로 객체를 만들기 위해서는 구체적인 설계도를 토대로 만드는데, 추상클래스는 없기 때문에 인스턴스 만들지 못함)

① 다른 클래스 작성에 도움을 주고, 상속을 통해 자손클래스에서 추상메서드를 완성시킨다.

 추상클래스에서는 메서드가 완성되어 있지 않기 때문에 인스턴스를 만들지 못한다.

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

댓글