DAY07(2) - 추상화, 인터페이스

은나현·2023년 1월 31일
0

📌 1. 추상화

  • 다형성(Override, Overload)은 서로 다른 기능이지만 메서드의 이름을 공통되게 처리함으로써 전체 프로그램의 일관성을 유지하게 한다.
  • Override 처리의 문제발생 가능성
    • @Override 는 선택적으로 사용하므로 메서드 이름에 실수가 발생하면 에러가 아닌 새로운 메서드의 정의로 인식되어 의도하지 않은 실행결과를 가져올 수 있다.
    • 부모의 기능을 재정의하지 않았다면 다형성의 구현은 이루어지지 않게 된다.

📍 1-1. 상속 처리 시 Override 강제하기

  • 추상화 기법은 특정 클래스를 상속받은 경우, 부모의 특정 메서드들을 무조건 재정의하도록 강제하는 기법이다.
    • 특정 메서드를 재정의하도록 강제함으로써, 자식 클래스들을 작성하기 위한 가이드 역할을 해줄 수 있다.
  • 즉, 추상화 기법은 java클래스를 작성하기 위한 설계도를 소스코드 형태로 제시하는 역할을 한다.

📍 1-2. 추상 메서드 만들기

  • 추상 메서드는 abstract 키워드를 사용하여 정의한다.
    • 추상 메서드는 자식 클래스가 구현해야 하는 메서드의 가이드라인만 제시하기 위한 목적으로 사용되기 때문에 선언만 가능하고 구현부가 없다.
      -public abstract void sayHello();

📍 1-3. 추상 클래스

  • 추상 메서드를 하나 이상 포함하고 있는 클래스는 반드시 추상클래스로 정의되어야 한다.
    • 추상클래스는 'abstract' 키워드를 사용하여 정의할 수 있다.
    public abstract class Hello{
    	public abstract void sayHello();
    }
  • 추상클래스는 객체를 생성할 수 없고, 반드시 상속을 통해서만 사용될 수 있다. 즉, 추상클래스는 다른 자식 클래스를 위한 가이드라인의 역할을 한다.
    • 공통기능과 설계 제시를 모두 처리
      • 추상 클래스는 생성자, 멤버변수, 일반 메서드 등을 포함할 수 있다.
      • 즉, 공통 기능과 가이드라인을 모두 정의하여 다른 클래스에게 상속된다.

📌 2. 인터페이스

  • 추상 클래스의 한계
    • 자바 클래스 간의 상속에서는 하나의 부모만 존재할 수 있기 때문에, 다중 상속의 구현은 불가능하다.

📍 2-1. 인터페이스 Interface

  • 완벽한 추상화를 구현하기 위한 java Class의 한 종류

    • 다중 상속이 가능하기 때문에 용도별로 세분화하여 필요한 요소만 상속할 수 있다.
    • 추상 클래스인터페이스의 비교
      추상 클래스인터페이스
      포함 가능한 요소멤버변수, 생성자, 메서드, 추상 메서드추상 메서드
      다중 상속불가능가능
      객체 생성불가능불가능
  • 인터페이스의 상속은 implements 키워드를 사용한다.

    • 인터페이스도 추상화를 구현하고 있기 때문에 인터페이스를 상속받는 클래스는 인터페이스 내의 모든 메서드들을 반드시 재정의해야 한다.
    • 인터페이스의 다중 상속
      : 콤마로 연결하여 여러 개를 동시에 상속받을 수 있다.
      implements Interface1, Interface2
      : 필요한 경우 클래스와 동시에 상속받을 수 있다.
      extends Class1 implements Interface1, Interface2

0개의 댓글