티스토리 뷰
1. 공통점
- abstract class와 interface는 선언만 있고 구현 내용이 없는 클래스입니다.
- 자기 자신이 new로 객체생성을 해서 사용하는게 불가능합니다.
- 추상클래스와 같은 경우 extends를 한 자식클래스나, 인터페이스와 같은 경우 implements한
자식 인터페이스만 객체를 생성할 수 있습니다.
2. 차이점
1) 추상클래스
- 추상클래스와 같은 경우 말그대로 클래스이고, 인터페이스와 같은 경우 구현하기 전 메서드에
대해 명시된것으로도 볼 수 있습니다.
- 추상클래스와 같은 경우 반드시 클래스 내에 추상메서드(abstract Method())가 존재해야 합니다.
- 오로지 단일상속(extends) 만 가능합니다.
- 여러 메서드가 있지만 가져다 쓰거나 오버라이드 하거나, abstract가 붙은 메서드는 반드시 구현해
야 합니다.
- class A extends B {} 라고 하면 A는 B라는 클래스를 상속 받겠다고 이해하면 됩니다.
2) 인터페이스
- 인터페이스는 구현체 없이 메소드에 대한 명세만 되어있습니다.
- 상속받는 자식클래스에는 반드시 인터페이스에 있는 메소드를 다 구현해야 합니다.
- implements를 구현하는 부분에서 extends 또한 사용할 수 있습니다. 즉, 다중상속이 가능합니다.
- '이러한 메서드를 쓸것이다.' 라는 마음으로 인터페이스에 선언한 다음 선언된 그대로 모두 구현해야
하는게 인터페이스입니다.
- class A implements C {} 라고 하면 A는 C라는 인터페이스를 구현하겠다는 의미로 생각하면 됩니다.
- 구현 객체의 같은 동작을 보장합니다.
- 오로지 메서드 선언만 가능합니다.
- 생성자와 일반 변수를 가질 수 없습니다.
- 추상메서드만 가능합니다.
- interface : 동물
method : 먹는다, 걷는다, 잔다 (동사)
implements (구현체) : 고양이, 강아지, 닭 (동물종류)
3. 상속클래스를 소스로 구현
* 실행결과는 다음과 같다.
비틀즈, 롤링스톤즈, 핑크플로이드
레드제플린
딥퍼플
주다스프리스트
4. 인터페이스를 소스로 구현
- 동물 인터페이스 ('먹다', '운동한다' 라는 추상매서드가 있다.)
- 각종 동물 클래스들이 동물 인터페이스안의 '먹다', '운동한다' 라는 추상매서드를 구현.
- 동물인터페이스 라는 클래스 안에서 각 동물별 인스턴스를 생성하여 매서드를 호출.
* 실행결과는 다음과 같다.
고양이는 생선을(를) 먹습니다.
강아지는 육류을(를) 먹습니다.
닭은 곡류을(를) 먹습니다.
고양이는 당구운동을 합니다.
강아지는 헬스운동을 합니다.
닭은 축구운동을 합니다.
'프로그래밍언어 > 자바. 스프링' 카테고리의 다른 글
[Spring] servlet-context.xml, root-context.xml, web.xml의 차이 (0) | 2020.06.05 |
---|---|
[Java] Web서버와 Was서버의 차이. (0) | 2020.06.04 |
[Spring] Interceptor (0) | 2020.05.21 |
[Java] Java 개념 및 면접 예상질문 (0) | 2020.03.31 |
[Java] 자바 에러 모음 (0) | 2020.03.23 |