생각의 흐름대로 정리

추상화란 객체지향 프로그래밍의 특징 중 하나.

공통된 특징을 묶어 하나의 클래스로 정의하는 것을 말한다.

 

추상화의 특징 : 다중 상속이 불가능하다. 추상클래스에서는 일반 메소드도 같이 사용이 가능하다.

 

자바에서는 하나 이상의 추상 메소드를 포함하는 클래스를 가리켜 추상 클래스라고 한다. 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 클래스를 상속받는 모든 클래스에서는 해당 추상 메소드를 반드시 재정의해야 한다. 이를 통해 각 개별 개체의 구체적인 구현에 대한 상세함을 갖출 수 있다. 추상 클래스는 객체를 생성할 수 없다.

 

자식 클래스에서 반드시 오버라이딩 해야만 사용할 수 있는 메소드를 추상 메소드라고 한다. 자바에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다.

abstract 키워드를 메솓 앞에 붙여준다.

추상 메소드는 추상 클래스 안에서 선언만 하고, 구체적인 구현은 추상클래스를 상속받은 자식 클래스에서 진행한다.

추상 메소드 뒤에 {} 가 아닌 ; 을 붙인다.

 

인터페이스는 추상 클래스보다 더 추상화된 클래스로 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당한다. 즉, 모든 기능을 추상화로 정의만 하고 구현은 하지 않은 것을 말한다.

 

인터페이스 특징

- 실제 구현된 것이 전혀 없는 기본 설계도

- 미리 정해진 규칙에 맞게 구현하도록 '표준'을 제시하는데 사용한다.

- 클래스와 인터페이스는 서로 상속받을 수 없다. 단, 클래스는 클래스끼리 인터페이스는 인터페이스끼리 상속시킬 수 있다.

- 클래스는 다중 상속을 허용하지 않지만 인터페이스는 다중 구현을 허용한다.

- 인터페이스에서는 일반 메소드를 사용할 수 없다.

- implements 키워드를 사용하여 인터페이스를 '상속'이 아닌 '구현'한다.

 

인터페이스와 추상 클래스의 차이점

  • 추상 클래스(Abstract Class)
    - 인스턴스 생성보다 상속을 목적으로 사용한다.
    - 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있다.
  • 인터페이스(Interface)
    - 주로 제공할 기능을 정의하는데 사용한다.
    - 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있다.
    - 인터페이스에서는 abstract를 생략할 수 있다.

 

 


 

 

한 줄 정리

추상화는 객체지향 프로그래밍의 특징 중 하나로, 공통된 특징을 하나로 묶어 클래스로 만드는 것 입니다.

 

추상 클래스(Abstract Class)는 하나 이상의 추상 메소드를 포함한 클래스를 추상 클래스라고 합니다.
반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언하면, 상속 받은 자식 클래스는 이를 반드시 재정의해야 합니다.

 

추상 메소드는 정의부만 있고 구현부는 없는 메소드 입니다. 자식 클래스에서 반드시 오버라이딩 해야 사용할 수 있습니다.

 

인터페이스(Interface)는 추상 클래스보다 더 추상화된 클래스로, 다른 클래스를 작성할 때 기본이 되는 틀을 제공합니다.
인터페이스 내에 선언된 모든 메소드는 추상 메소드이고, 변수는 상수로 선언이 됩니다.

 

추상 클래스 vs 인터페이스
추상 클래스는 추상 메소드 외 일반 메소드 등도 선언이 가능하지만 인터페이스는 추상메소드와 상수만 선언이 가능합니다.
추상 클래스는 다중 상속이 불가능 하지만, 인터페이스는 다중 구현이 가능합니다.
728x90

'이론 > CS공부' 카테고리의 다른 글

디자인 패턴  (0) 2022.11.02
컬렉션 프레임워크  (0) 2022.11.02
MVC패턴  (0) 2022.11.02
Cookie vs Session  (0) 2022.10.31
Servlet vs JSP  (0) 2022.10.27

+ Recent posts