자바(Java) - 인터페이스(Interface) 개념과 예제

안녕하세요

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

댓글 없음:

댓글 쓰기