이번 시간에는 저번 시간 자바의 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);
}
}





















