코코아 Study_JAVA 추상클래스 & 인터페이스 #1
21.11.24(수)
추상클래스
1. 추상클래스란?
- 클래스 간의 비슷한 변수와 메소드를 공통적으로 추출해서 만들어진 클래스다.
- 미완성 설계도. 미완성 메소드(추상메소드, 몸통(구현{})이 없다)를 갖고 있는 클래스
즉, 추상메소드가 있기 때문에 추상클래스로 부른다.
** 추상메소드는 자손마다 다르게 구현될 것으로 예상되는 경우 쓰임
2. 추상클래스 특징
- 실체성이 없고 구체적이지 않기 대문에 객체를 생성할 수 없다.
- 실체클래스와 추상클래스는 상속관계이다.
- 추상 클래스는 동작이 정의되어 있지 않은 추상 메소드를 포함하고 있어서, 인스턴스를 못생성한다.
(먼저 상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를
오버라이딩하고 나서야 비로소 자식 클래스의 인스턴스 생성이 가능하다.)
- 클래스 간의 비슷한 변수와 메소드를 공통적으로 추출해서 만들어진 클래스다.
- 미완성 설계도. 미완성 메소드(추상메소드, 몸통(구현{})이 없다)를 갖고 있는 클래스
즉, 추상메소드가 있기 때문에 추상클래스로 부른다.
** 추상메소드는 자손마다 다르게 구현될 것으로 예상되는 경우 쓰임
- 실체성이 없고 구체적이지 않기 대문에 객체를 생성할 수 없다.
- 실체클래스와 추상클래스는 상속관계이다.
- 추상 클래스는 동작이 정의되어 있지 않은 추상 메소드를 포함하고 있어서, 인스턴스를 못생성한다.
(먼저 상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를
오버라이딩하고 나서야 비로소 자식 클래스의 인스턴스 생성이 가능하다.)
3. 추상클래스의 장점
- 필드와 메소드 이름을 통일하여 유지보수성을 높이고 통일성을 유지할 수 있다.
- 강제로 주어지는 필드와 메서드를 가지고 구현만 하면 되기 때문에 설계 시간이 절약된다.
- 규격에 맞게 소스가 구현되어 있어 해당 규격에 대한 구현부만 수정하면 손쉽게 수정 가능하다.
(SOLID 설계원칙을 알면 이해하기 더 쉽다.)
인터페이스
1. 인터페이스란?
- 다중 상속을 지원하여, 동일한 목적 하에 동일한 기능을 보장하게 하기 위한 기능.
2. 인터페이스 특징
- 자바에서의 추상클래스는 추상 메소드 뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만
인터페이스는 오로지 추상 메소드와 상수만을 포함 할 수 있다.(상수는 부수적인것)
- 프로그래밍 관점에서 추상 메소드의 집합이라 볼 수 있다.
- 구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public)
- 미완성된 설계도이기 때문에, 객체를 못만든다.
- 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상이 아니다.)
- 다중 상속이 가능(추상 메소드는 충돌해도 문제 없음)
- 두 객체 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.
- 다중 상속을 지원하여, 동일한 목적 하에 동일한 기능을 보장하게 하기 위한 기능.
- 자바에서의 추상클래스는 추상 메소드 뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만
인터페이스는 오로지 추상 메소드와 상수만을 포함 할 수 있다.(상수는 부수적인것)
- 프로그래밍 관점에서 추상 메소드의 집합이라 볼 수 있다.
- 구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public)
- 미완성된 설계도이기 때문에, 객체를 못만든다.
- 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상이 아니다.)
- 다중 상속이 가능(추상 메소드는 충돌해도 문제 없음)
- 두 객체 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.
3. 인터페이스의 장점
- 대규모 프로젝트 진행 시 일관되고 정형화된 개발을 위한 표준화가 가능하다.
- 선언(설계)(껍데기)와 구현(알맹이)을 분리시킬 수 있어 유지보수에 용이하다.
- 개발 시간을 단축시킬 수 있다.
- 변경에 유리한 설계가 가능하다.
Author And Source
이 문제에 관하여(코코아 Study_JAVA 추상클래스 & 인터페이스 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dragon9265/Study-JAVA-인터페이스-추상클래스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)