[펌] http://www.cyworld.com/listentossoo/272880


interface는 추상클래스와 성격이 비슷하다.

추상메소드를 갖는것, 객체를 생성할 수 없는 것, 상속받은 서브클래스에서 메소드 정의 해주는 것 등.

static 메소드는 올수 없고, 메소드는 기본적으로 public성질을 갖고 있다. 그러므로 오버라이딩 하여 쓸 때에는 public을 꼭 써주어야 한다.

interface 에서 선언한 멤버필드는 상수이다.

(public static final)의 속성을 갖고 있다.

 

 

 

차이점 : interface는 다중상속, 추상클래스는 단일 상속

추상클래스에선 일반 메소드의 구현이 가능 하지만 interface 에서는  오직 메소드 선언만 가능

서브클래스에서 메소드를 모두 오버라이딩 해주지 않으며 그 클래스는 abstract선언을 해 주어야 한다.

 

 

interface로 선언된 클래스를 일반 클래스가 상속 받을 때

implements를 사용한다.

 

interface끼리의 상속은 extends를 사용한다

 

 

 

예>

interface A {

//이곳에 정의된 필드는 정의 하지 않아도 상수속성(public, static,fianl)을 갖는다.
public String methodA(String s);
}   // interface다중상속이 가능하다. 추상메소드와 같이 메소드 선언만 한다

 

 

 

class Kor implements A //interface의 상속 지정어 implements

//interface class에 선언된 메소드를 여기서 전부 구현해 놓지 않으려면 이 클래스를 추상클래스로 선언해 두어야 한다.
{
 public String methodA(String g) {   
//상속받은 메소드 실질 구현( 오버라이딩 )
  return g + "반갑다 ";
 }
}

 

 


public class Ame
{
 public static void main(String args[]){
     A a = new Kor()
//다형성 -부모값부터 찾고 존재하면 자식것을 가져온다. 부모에 값이 없으면, Error, 부모에 있고 자식에 없으면 부모것을 가져옴.
  String h = a.methodA("안녕 ");
  System.out.println(h);
 }
};

+ Recent posts