2013. 12. 19. 09:42
인터페이스 추상클래스 추상메서드의 차이

추상클래스

한개 이상 포함하고 있는 클래스, 객체(Instance) 화 할 수 없는 클래스
그리는 행위에서 삼각형,사각형,동그라미 등 공통적인 부분에 포함되어 그리다라는 추상메서드를 선언
상속을 통해 child class를 만들기 위한 parent class design 하기 위한 클래스
추상클래스는 사용해서 안해도 되지만 큰프로그램이나, 다른사람들과 비슷하게 개발한다고할때 추상클래스는 그 기본 틀을 잡아준다.(작업의 레벨 분할의 위해서 사용)


abstract class Player{
          public abstract void start();
}
public class Radio extends Player{
          @Override public void start() {}
}

추상메소드

추상메서드는 메서드의 구현부분(몸통)이 없고, 메서드 선언부분만 존재
추상메서드는 몸통이 없으므로 직접 어떤일을 할 수가 없다.



인터페이스

인터페이스는 단일 상속의 확장성 문제를 보완하는 기능을 함.
상수와 추상메소드의 집합체
-모든 멤버 변수는 public static final 이여야 하며 이를 생략 할 수 있다.
-모든 메소드는 public absctract 이어야 하며 이를 생략 할 수 있다.
서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
인터페이스를 구현할때, 클래스는 반드시 인터페이스가 요구하는 모든 메소드를 구현
중복구현가능
공동 작업을 위한 상호간의 인터페이스를 위해 사용


[Sample]  Sample 출저: http://rank01.tistory.com/63

public interface Card(){

private int spade = 5; //오류 : interface 제약을 따르지 않았다.

public int spade1 = 5; //정상 : public static final spade1 = 5; 로 컴파일러가 자동으로 추가해준다.

static int heard = 2;  //정상 : 컴파일러의 자동추가

int clover = 4; //정상 : 컴파일러의 자동추가

 

public abstract String getCardNumber(); //제약을 따랐기 때문에 정상이다.

String getCardKing(); //public abstract String getCardKing(); 컴파일러가 자동으로 추가해준다.

 

private abstract String getCard(); //제약을 따르지 않은  private로 오류가 난다.

protected abstract String getCard2(); //제약을 따르지 않은 protected로 오류가 난다.

 

     }



내가 찾던 인터페이스 

인터페이스는 클래스를 서로 연결시켜주는 매개체와 같은 역할을 하면서

자신을 구현한 클래스에 대해 명령(수행) 을 내일수 있습니다.

 

 

class Html implements WebIF {}

 

class Xml implements WebIF {}

 

class Pdf implements WebIF {}

 

위의 Html Xml Pdf  세가지의 클래스는 웹 인터페이스를 구현 하였습니다.

 

 

그러므로 위의 3개의 클래스의 형(Class Type)은 같습니다.

 

샘플 코드를 작성하면 이렇게 되겠지요

 

WebIF inf = new Html();

 

WebIF inf = new Xml();

 

WebIF inf = new Pdf();

 

업 케스팅 인스턴스를 한 것입니다.

 

그런데 WebIf 에 print() 메서드가 있다면

 

Html

Xml

Pdf

 

위의 3개의 클래스는 prin() 메서드를 자신들에 알맞게 구현해 주면 됩니다.

 

Html 은 <html></html> 이 될 것이고

Xml 은 이 될 것이고

Pdf 는 %PDF-1.2 ..................... %%EOF 가 되겠지요...

 

인터페이스는 서로다른 객체를 표준화된 인터페이스란 통로로 서로 연결시키고

 

약속된 일을 수행함으로써 확장된 객체로서 다양한 비지니스 요구사항을 충족시키게 되는 것입니다.


출저: http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=69965713

Posted by hoonihoon