JAVA 기초/interface와 abstract class 차이

인터페이스와 추상클래스

prohibit174 2017. 3. 4. 17:16

<추상클래스>

  • 인스턴스 화를 금지한다 = 객체 생성을 금지한다.
  • 왜 만들어졌을까..? --> abstract 라는 이름을 가진 추상 메소드가 있는데 메소드의 내용이 없다, 결국 이 메소드는 호출하기 위한 목적이 아니다. 자식에게 반드시 추상메소드를 오버라이딩 하도록 하기 위한 목                                  
  • abstract class이름 의 자식 class 들은 반드시 부모의 메소드를 가지고 있어야 한다.
  • 적어도 한개의 abstract 메소드를 가지고 있으면 자식 클래스도 abstract 가 가지고 있는 추상 메소드를 반드시 가져야 한다.


<인터페이스>

 인터페이스는 추상 메소드 만으로 이루어진 class 이다. 자바는 다중 상속을 지원하지 않는다. 따라서 부모의 기능을 상속 받은 class는 다른 class를 상속 받을 수 없다는 것이다. 그러나 인터페이스를 implements 하는 class 는 다른 class 를 상속 받을 수 있다.



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

추상 class 는 그 추상 class 를 상속 받아 추상 메소드를 이용하도록 하여 확장시킨다. 반면에 인터페이스는 구현한 객체의 같은 기능을 보장하기 위한 목적이다. 


1. 접근제어자가 public만 가능하다.

       2. 상수와 추상 메소드만 가질수 있음.

3.인터페이스만 상속 가능

4.생성자가 없다.

5.다중 상속이 가능하다.