[java] OOP - 추상화

sesame·2021년 8월 4일
0

Java

목록 보기
15/25

> 추상화(abstraction) - 정리 과정

프로그램이 필요로 하는 실제 데이터들을 모델링 하는 기술

추상화 EX1)

회원관리
주민등록번호 pNo string
이름 name string
성별 sex char
주소 address string
나이 age int

> 추상 클래스

선언되어 있지만 구현되지 않은 미완성의 (추상)메소드를 포함한 클래스

특징

  • 미완성 클래스(자체적 객체 생성 불가 ⇒ 반드시 상속하여 객체 생성)

  • 클래스 내에 일반 변수, 메소드 포함 가능

  • 객체 생성은 안되지만 참조형 변수 타입으로는 사용 가능

  • 장점: 일관된 인터페이스 제공, 꼭 필요한 기능 강제화

> 추상 메소드 : {}를 가지지 않는다

몸체 없는 메소드로 상속 시 반드시 구현해야 하는 오버라이딩이 강제화되는 메소드이다.

> 인터페이스

  • 추상메소드로만 구성된 추상 클래스(일반 메소드, 변수 x, 필드 수정 안됨, 생성자 없음)

  • 여러 클래스에서 사용되는 동일한 상수일 경우 인터페이스에 정의한 후 해당 상수를 공유할 수 있게 하면 중복을 줄일 수 있다.

  • 추상 메소드 작성하려면 abstract 키워드를 표시해야 하지만 인터페이스 내부에는 모든 메소드가 추상메소드이므로 public abstract 키워드를 생략할 수 있다.

  • 추상 메소드에 대한 구현과 재정의는 인터페이스를 상속받은 후손 클래스에서 구현

  • 변수는 묵시적으로 public static final, 따라서 인터페이스 변수의 값 변경 시도 시 컴파일 시 에러 발생

  • 객체 생성은 안 되나 참조형 변수로는 가능

장점

  • 상위 타입 역할로 다형성을 지원하여 연결

  • 해당 객체가 다양한 기능 제공 시에도 인터페이스에 해당하는 기능만을 사용하게 제한 가능

  • 공통 기능 상의 일관성 제공

  • 공동 작업을 위한 인터페이스 제공

0개의 댓글

관련 채용 정보