[Java] 추상화

박채은·2022년 11월 8일
0

Java

목록 보기
20/30

추상화

객체의 공통적인 속성과 기능을 추출하여 정의하는 것

  • 기존 클래스들의 공통적인 요소들을 뽑아내서 추상 클래스를 만들어 내는 것
  • 기존 객체들의 공통적인 기능들을 뽑아서 인터페이스를 만들어 내는 것

장점

  • 코드의 중복을 줄일 수 있다.
  • 효과적으로 클래스 간의 관계를 설정할 수 있다.
  • 유지/보수가 용이

추상 클래스

  • 추상 메서드가 포함되어 있으면, 자동으로 추상 클래스가 된다.

  • 추상 클래스에는 변수나 메서드의 선언부만 작성하고, 이를 상속받는 하위 클래스에서 메서드의 구현부를 작성해준다.
    => 오버라이딩
    => 상속받는 하위 클래스에 따라 구현부가 달라지기 때문에, 더욱 유연하게 프로그래밍을 할 수 있다.

  • 상속계층도의 상층부에 위치할 수록 추상화 정도가 높고, 아래로 갈수록 구체화된다.

  • 상층부에 가까울수록, 더 공통적인 속성과 기능들이 정의되어 있다.


final 제어자

  • 필드, 메서드, 지역 변수, 클래스 앞에 붙을 수 있다. => 변경 불가한 성질을 부여
    • 클래스 : 변경, 확장, 상속이 불가한 클래스
    • 메서드 : 오버라이딩 불가
    • 변수 : 변경 불가

인터페이스

  • 내부의 모든 필드 변수는 public static final(상수) 이다.

  • Java 8 이후에 추가된 default/static 메서드를 제외하고는, 내부의 메서드는 public abstract이다.
    -> 인터페이스에 제어자가 항상 내포되어 있기 때문에, 생략해도 상관없다!

  • 클래스가 인터페이스를 구현한다 = 인터페이스의 추상 메서드를 반드시 구현하도록 강제한다

  • 인터페이스는 다중 구현이 가능하다.


인터페이스 vs 추상 클래스

  • 인터페이스가 추상 클래스보다 더 높은 추상성을 가진다.
    • 추상 클래스: 추상 메서드를 하나 이상 포함한다는 점 외에는 기본적으로 일반 클래스와 동일하다.
    • 인터페이스: 추상 메서드와 상수만을 멤버로 가질 수 있다.
  • 존재 목적이 다르다.
    • 추상 클래스: 추상 클래스를 상속받아, 확장시키는 것이 목적
    • 인터페이스: 추상 메소드의 구현을 강제하여, 인터페이스를 구현한 객체들에게 동일한 동작을 약속하는 것이 목적

[참고]
https://theheydaze.tistory.com/608

0개의 댓글