본문 바로가기

FALL in/G.MA' s 자바

인터페이스와 다중상속


인터페이스와 다중상속 

자바에서는 다중상속이 불가능하다. 따라서 인터페이스라는것이 생겼다. 추상메소드와 비슷한 개념이지만 상수(변하지않는값)와 추상메소드만 정의 되어있다. 

implements 키워드를 사용하면된다.  

인터페이스는 인터페이스를 상속할수있고, 다중인터페이스 구현이 가능하다. 

따라서 implemets 키워드 뒤에 하나이상의 인터페이스가 올수있다.



interface hello{ //인터페이스 정의.

int a = 10;//상수는 가능. 

String name = "JiYeon"; //상수는 가능. 

//int b; -> 변수는 불가. 

public void hi(); //추상메소드 정의.

public void say_hello(); //추상메소드 정의.

}


interface dog{ //인터페이스 정의.

String dogName ="puppy"; //상수 선언. 

public void bark(String name); //추상메소드 정의.

}


public class interfaceEx implements hello,dog{ // 여러개의 인터페이스 구현.


public static void main(String[] args) {

interfaceEx i = new interfaceEx();

i.hi();

i.say_hello();

//i.name = "G.ma" ->에러/상수이므로 변경불가.

i.bark("JiYeon");

//i.dogName = "G.ma" ->에러/상수이므로 변경불가.

}


@Override

public void hi() { //hello인터페이스의 메소드 오버라이딩(추상메소드 정의).

// TODO Auto-generated method stub

System.out.println(a);

System.out.println("hi,"+name);

}


@Override

public void say_hello() { //hello인터페이스의 메소드 오버라이딩(추상메소드 정의).

// TODO Auto-generated method stub

System.out.println("hello!");

}


@Override

public void bark(String name) { //dog인터페이스의 메소드 오버라이딩(추상메소드 정의). 

// TODO Auto-generated method stub

System.out.println("hi,"+name+" I'm "+dogName+"!");

}

}

 

주의. 인터페이스안의 속성상수는 변경불가하다. 


결과화면

10

hi,JiYeon

hello!

hi,JiYeon I'm puppy!



'FALL in > G.MA' s 자바' 카테고리의 다른 글

익명내부클래스  (0) 2016.04.12
추상클래스와 추상메소드  (0) 2016.04.12
오버라이딩  (0) 2016.04.12
오버로딩  (0) 2016.04.12