이번 시간에는 저번 시간 자바의 final에 이어서
인터페이스(Interface) 개념과 예제를 올려봅니다.
자바에서 인터페이스는 모든 메소드가 추상메소드이고, 모든 속성이 상수(final 변수)로 구성된 틀 : 멤버가 추상메소드+ 상수로만 구성된 것을 말합니다.
- 인터페이스를 상속받을 때는 implements 란 키워드를 사용합니다.
- 인터페이스는 다중 상속이 가능합니다.
인터페이스 구현방법은 아래와 같습니다.
interface MyInter{
void sub();
// 추상메소드 -- public과 abstract를 생략해도 자동으로 붙는다.
}
또한 인터페이스를 상속받으려면 반드시 추상메소드를 오버라이딩 해야합니다.
class MyClass implements MyInter{
public void sub(){
System.out.println("Sub()");
}
}
개념은 여기까지 설명하고 아래 실제 예제를 올려봅니다.
interface Inter1{ String bar(); } interface Inter2{ void baz(); } interface Inter3 extends Inter1, Inter2{ int ADD=1; int DELETE=2; } //interface는 자동으로 abstract가 붙지만 추상클래스는 수동으로 입력해줘야함 abstract class AbsClass{ abstract void foo(); public void print(){ System.out.println("AbsClass"); } } /*[실습] Inter3, AbsClass를 상속받은 뒤 * 에러나지 않도록 메소드를 오버라이드 하세요 * */ class MyClass2 extends AbsClass implements Inter3{ @Override public void foo(){ System.out.println("foo()"); } @Override public void print(){ System.out.println("MyClass2"); } @Override public String bar(){ return "리턴"; @Override public void baz(){ System.out.println("baz()"); } } public class InterfaceTest2{ public static void main(String[] args) { MyClass2 m1 = new MyClass2(); m1.foo(); m1.print(); System.out.println(m1.bar()); m1.baz(); System.out.println(Inter3.ADD); System.out.println(m1.DELETE) //AbsClass타입으로 선언 MyClass2 객체 생성; AbsClass a1 = new MyClass2(); a1.foo(); a1.print(); //a1.bar;[x] //Inter3타입으로 선언 MyClass2 객체 생성 Inter3 a2 = new MyClass2(); System.out.println(a2.bar()); a2.baz(); System.out.println(Inter3.ADD); System.out.println(a2.DELETE); } }
댓글 없음:
댓글 쓰기