-
[JAVA 31] 자바 인터페이스 ( Interface )Language/Java 2018. 2. 14. 19:05반응형
■ Interface ( 인터페이스 )
1. 설명
1) 모든 멤버 변수가 상수
2) 모든 메소드가 추상 메소드
로 구성된 ' 틀 '
< ex : 상수와 추상 메소드로 구성된 ' 껍데기 ' >
2. 특징
1) interface 앞에는 abstract가 생략이 되어 있다.
2) interface 의 멤버 변수 앞에는 public static final 이 생략 되어 있다.
3) interface 의 메소드 앞에는 public abstract 가 생략 되어 있다.
4) static 메소드를 가질 수 없다.
5) interface 앞에 접근 제한자는 public 과 default 가 가능하다.
123456public abstract interface InterfaceS1{ // interface study 1public static final int A = 10;public abstract void m();}cs 123456interface InterfaceS1{ // interface study 1final int A = 10;void m();}cs /* 위의 인터페이스와 아래의 인터페이스는 완전하게 같다.아래의 인터페이스는 각각의 접근 제한자가 생략되어 있는 것이다.*/컴파일이 정삭적으로 되는 모습이 확인 된다.
6) interface 객체는 반드시 완벽한 하위 클래스를 만들어 그 하위 객체를 형변환하여 생성해야 한다.
7) class 와 interface 는 implements 예약어로 다중 상속이 가능하다.
123456public abstract interface InterfaceS1{ // interface study 1public static final int A = 10;public abstract void m1();}cs 12345interface InterfaceS2{int B = 20;void m2();}cs 12345678910111213141516171819202122public class IChild implements InterfaceS1 , InterfaceS2{ // 완변한 하위 클래스를 만들었다.// 자식의 접근제한자의 범위가 부모의 접근제한자와 같거나 커야 가능하다.public void m1(){System.out.println("IChild 의 메소드 1");}public void m2(){System.out.println("IChild 의 메소드 2");}}class IUser{public static void main(String[] args){InterfaceS1 is1 = new IChild();InterfaceS2 is2 = new IChild();System.out.println("InterfaceS1.A : " + InterfaceS1.A);System.out.println("IChild.A : " + IChild.A);System.out.println("InterfaceS2.B : " + InterfaceS2.B);System.out.println("IChild.B : " + IChild.B);is1.m1();is2.m2();}}8) interface 끼리는 extends 예약어로 다중상속이 가능하다.
123456public abstract interface InterfaceS1{ // interface study 1public static final int A = 10;public abstract void m1();}cs 12345interface InterfaceS2{int B = 20;void m2();}cs 123456interface InterfaceChild extends InterfaceS1 , InterfaceS2{String NAME = "CIVIC";void m3();}cs 12345678910111213141516171819202122232425262728public class IChild implements InterfaceChild{ // 완변한 하위 클래스를 만들었다.// 자식의 접근제한자의 범위가 부모의 접근제한자와 같거나 커야 가능하다.public void m1(){System.out.println("IChild 의 메소드 1");}public void m2(){System.out.println("IChild 의 메소드 2");}public void m3(){System.out.println("IChild 의 메소드 3");}}class IUser{public static void main(String[] args){InterfaceChild ic = new IChild();System.out.println("InterfaceS1.A : " + InterfaceS1.A);System.out.println("IChild.A : " + IChild.A);System.out.println("");System.out.println("InterfaceS2.B : " + InterfaceS2.B);System.out.println("IChild.B : " + IChild.B);System.out.println("");System.out.println("InterfaceChild.NAME : " + InterfaceChild.NAME);System.out.println("IChild.NAME : " + IChild.NAME);ic.m1();ic.m2();ic.m3();}}cs 3. 인터페이스와 추상 클래스의 공통점
- 추상 메소드를 가질 수 있다.
4. 인터페이스와 추상 클래스의 사용 목적
반응형'Language > Java' 카테고리의 다른 글
[JAVA 33] 자바 패키지 ( package ) (0) 2018.02.17 [JAVA 32] 자바 예외처리 ( Exception / throws ) try{}catch(){}finally{} (0) 2018.02.17 [JAVA 30] 자바 오버로딩 ( Overloading ) (0) 2018.02.14 [JAVA 29] 자바 오버라이딩 ( Overriding ) (0) 2018.02.14 [JAVA 28] 자바 식별자 ( Identifier ) (0) 2018.02.14