기억의 DataBase

인터페이스 본문

Java

인터페이스

Zester; 2019. 1. 18. 12:35
  • 인터페이스
인터페이스를 이해하려면 SDLC(소프트웨어 개발 생명 주기)를 이해
소프트웨어를 만들 때 가장 중요한 것은?
필요한 메소드를 구현하는 것

왜 인터페이스를 선언하는가?
> 메소드 구현보다 선언(계획)이 먼저이므로

1.인터페이스의 메소드 - 메소드를 선언

public interface Dice {
       //정수를 반환하는 메소드를 선언
       public int get();
}

2.클래스의 메소드 - 메소드를 구현

public class Dice6 implements Dice {
       @Override // Dice 인터페이스의 get() 메소드를 구현
       public int get() {
             int value = (int)(Math.random()*6)+1;
             return value;
       }
}

3.인터페이스를 참조타입으로 하여 객체 생성

public class DiceTest {
       public static void main(String[] args) {
             Dice dice = new Dice6();
             int value= dice.get();
             System.out.println(value);
       }
}

※ 되도록 인터페이스를 참조타입으로하여 사용하는 것이, 설계상 바람직(체계적)

interface 회원서비스{
    
        회원가입();
        회원수정();
        회원탈퇴();

}

  • 리플렉션-  객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법
public class DiceTest {
       public static void main(String[] args) throws Exception{

             // 리플렉션 > Class의 정보를 구하는 방법
             String className = "Day0118.Dice6";
                                 //클래스에 대한 정보를 가져옴
             Class clazz = Class.forName(className);
                                   
             Method[] methods = clazz.getMethods();
             for(int i = 0; i<methods.length; i++) {
                        System.out.println(methods[i].getName());
             }
                                   // new랑 같음 (new Dice6) 
             Dice dice1 = (Dice6)clazz.newInstance();
             Dice dice2 = (Dice)clazz.newInstance();
                       // 인터페이스로 형변환하면 Dice6(clazz 정보가 있음)으로 인스턴스 가능
             
             System.out.println(dice1.get());
             System.out.println(dice2.get());
 
      }
}

'Java' 카테고리의 다른 글

I/O(Input / Output)  (0) 2019.01.31
기본형, 참조형, 배열, Object, String  (0) 2019.01.18
상속, 추상클래스  (0) 2019.01.18
접근지정자  (0) 2019.01.17
생성자  (0) 2019.01.17