포스트

23. 추상 클래스

추상 클래스에 대해 알아가보자.

23. 추상 클래스

추상 클래스 레퍼런스와 메서드 호출

추상 클래스 및 메서드 호출

제대로 알고 가자!
인터페이스 : 객체 사용 규칙을 정의
추상 클래스 : 서브클래스에게 무엇을 물려줘야할 지 정의

추상 클래스

추상클래스 응용

  1. 추상 클래스 도입 전 추상 클래스 도입 전

    클래스의 사용법이 다르면 display()를 각 타입에 맞춰 따로 정의해야한다.

    • display(BubbleSort, int[ ])
    • display(QuickSort, int[ ])

    문제점

    1. 중복 코드가 발생하기 쉽다.
    2. 프로그래밍의 일관성이 없다.

    즉, 유지보수가 어려워진다.

  2. 상속 이용 : 같은 타입으로 만들기 상속 이용 상속을 이용
    • 타입을 같게 한다.
      타입 → 부모클래스 ⇒ 부모 클래스가 같으면 부모클래스의 레퍼런스로
      두 개의 클래스의 객체를 모두 다룰 수 있다. (= 다형적 변수)
    • 사용법을 같게 한다. → 메서드가 같다 ⇒ 프로그래밍의 일관성 제공

    문제점

    1. sorter가 일반 클래스라서 인스턴스 생성을 못 막음 ex) new Sorter( )

  3. 추상 클래스 도입 : 직접 사용을 제한

    추상 클래스 도입 추상 클래스를 도입해 직접적인 사용을 제한한다

    문제점

    1. 다른 개발자가 sort( )를 오버라이딩하지않고 다르게 만들 수 있다.
      왜냐? overriding이 강제가 아니기 때문임

  4. 추상 메서드 : 서브 클래스에게 구현의 책임을 떠넘긴다.(= 강제한다.)

    추상 메서드 사용 추상 메서드로 바꾸면서 구현을 서브 클래스에게 강제한다.
    이러면 개발자 마음대로 sort를 오버라이딩 하지않고 다르게 만들 수 없다.

  5. 인터페이스 : 객체 사용 규칙 정의 → 추상 메서드만 있다면 인터페이스로 전환하기

    인터페이스 사용 클래스 내부에 추상 메서드만 있다면
    내부 메서드가 기본 추상 메서드인 인터페이스로 바꾸어준다.

캡슐화와 접근제어

  1. 추상화(abstraction)

추상화 현실의 개념이나 사물, 물체등을 컴퓨터가 다룰 수 있는 정의 → 데이터, 코드로 변환

  1. 접근제어(modifier)

접근제어

1
private, (default), protected, public

추상화가 무너지는 것을 막는다.
유효하지 않은 데이터를 넣거나 메서드를 실행 시키는 것을 방지하기 위해 접근을 제어함

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.