BLOG main image
분류 전체보기 (313)
교육 (13)
NEIS (6)
Edufine (0)
Programmer (5)
Android Programming (1)
Internet W3 (18)
JAVA Programming (9)
JSP/Servlet (1)
Framework (7)
Spring For Beginner (4)
eGovFrame (10)
MEAN Stack (2)
NodeJS (5)
SublimeText (30)
SublimeText_Tips (18)
Eclipse (16)
JavaScript (8)
jQuery (12)
jQuery_tips (1)
Ajax (3)
DWR(Direct Web Remote) (4)
JSON(JS Object Notation) (4)
Oracle (2)
MySQL (28)
OS (16)
Download (3)
Life (10)
Favorit Site (1)
Books (2)
Healthy (1)
Stocks (1)
HTML5/CSS (1)
Python (4)
Security (7)
CISSP (0)
Ruby On Rails (5)
일기장 (0)
영어 교과서(중2) (3)
알고리즘 (0)
Go Lang (3)
VB 2010 (12)
C# (1)
정보보안기사(네트워크보안) (0)
업무 활용 엑셀 (11)
틈틈이 활용팁 (14)
하루 하루 살아가며 ……. (2)
기술 (1)
파이썬 & 데이터분석 (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2015. 4. 30. 15:27

인터페이스(Interface)

 

완벽한 abstract 클래스는 Interface

abstract class PersonalNumberStorage

{

  public abstract void addPersonalInfo(String name, String perNum);

  public abstract String searchName(String perNum);

}

위의 추상클래스는 다음 interface 와 같다.

interface PersonalNumberStorage

{

  void addPersonalInfo(String name, String perNum);

  String searchName(String perNum);

}

 

인터페이스 내에 존재하는 변수는 무조건 public static final 로 선언된다.

인터페이스 내에 존재하는 메소드는 무조건 public abstract 로 선언된다.

 

인터페이스를 구현(상속)할 때에는 키워드 extends를 사용하지 않고, 키워드 implements를 사용한다.

그리고 인터페이스 내에 정의되는 메소드는 무조건 public abstract 로 선언되기 때문에 이에 대한 선언을 별도로 해줄 필요가 없지만, 많은 개발자들이 다음과 같이 보다 명확히 표현하는 것을 즐긴다.

interface PersonalNumberStorage

{

  public abstract void addPersonalInfo(String name, String perNum);

  public abstract String searchName(String perNum);

}

 

메소드를 오버라이딩 하는 과정에서 접근의 허용범위를 좁히는 방식으로는 접근제어 지시자를 변경할 수 없다.

 

예) 상위 클래스에 public 으로 선언된 메소드는 하위 클래스에서 private 으로 오버라이딩이 불가능하다.

이 경우에는 오로지 public 으로만 메소드를 오버라이딩 해야 한다. 하지만 상위 클래스에서 private으로 선언된 메소드는 하위 클래스에서 default, protected 또는 public 으로 오버라이딩이 가능하다.

 

인터페이스 extends 인터페이스

하위클래스 extends 상위클래스

 

클래스 implements 인터페이스

 

■ interface 기반의 상수표현

 

프로그램상에서 월, 화, 수, 목, 금, 토, 일을 표현해야 한다고 가정하자.

이럴때 우리는 하나의 클래스 내에서 다음과 같이 각각을 상수화시켜서 표현을 한다.

 

public class Week

{

  public static final int MON=1;

  public static final int TUE=2;

  public static final int WED=3;

  public static final int THU=4;

  public static final int FRI=5;

  public static final int SAT=6;

  public static final int SUN=7;

}

 

그런데 "인터페이스 내에 존재하는 변수는 무조건 public static final 로 선언된다" 라는 특성을 활용하면 이를 다음과 같이 선언할 수도 있다.

 

public interface Week

{

  int MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7;

}

 

 

 

 

 

 

반응형

'JAVA Programming' 카테고리의 다른 글

추상 클래스  (0) 2015.04.28
자동 타입 변환  (0) 2015.04.27
protected 접근 제한자  (0) 2015.04.27
어노테이션(Annotation) #2  (0) 2015.04.23
어노테이션(Annotation) #1  (0) 2015.04.23