티스토리 뷰

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. 인터페이스를 소스로 구현

- 동물 인터페이스 ('먹다', '운동한다' 라는 추상매서드가 있다.)

- 각종 동물 클래스들이 동물 인터페이스안의 '먹다', '운동한다' 라는 추상매서드를 구현.

- 동물인터페이스 라는 클래스 안에서 각 동물별 인스턴스를 생성하여 매서드를 호출.

 

* 실행결과는 다음과 같다.

  고양이는 생선을(를) 먹습니다.  

  강아지는 육류을(를) 먹습니다.

  닭은 곡류을(를) 먹습니다.

  고양이는 당구운동을 합니다.

  강아지는 헬스운동을 합니다.

  닭은 축구운동을 합니다.

 

 

 

출처 : https://marobiana.tistory.com/58

출처 : https://private.tistory.com/20

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함