목록분류 전체보기 (639)
충분히 쌓여가는
인터페이스의 상수 필드, 추상 메소드, 디폴드 메소드, 정적 메소드는 모두 public 접근 제한을 갖는다 이 멤버들을 선언할 때는 public을 생략하더라도 컴파일 과정에서 public 접근 제한자가 붙어 항상 외부에서 접근이 가능하다 인터페이스 외부에서 접근할 수 없는 private 메소드 선언도 가능 private 메소드 구현 객체가 필요한 메소드 private 정적 메소드 구현 객체가 필요 없는 메소드 private 메소드는 디폴트 메소드 안에서만 호출이 가능 private 정적 메소드는 디폴트 메소드뿐만 아니라 정적 메소드 안에서도 호출 가능 private 메소드의 용도 디폴트와 정적 메소드들의 중복 코드를 줄이기 위함 package ch08.sec07; public interface Servi..
인터페이스에는 정적 메소드도 선언이 가능하다 추상 메소드와 디폴트 메소드는 구현 객체가 필요하지만, 정적 메소드는 구현 객체가 없어도 인터페이스만으로도 호출할 수 있다 선언 방법은 클래스 정적 메소드와 동일하지만, public을 생략하더라도 자동으로 컴파일 과정에서 붙는 것이 차이점이다 public|private static 리턴타입 메소드명(매개변수, ...) {...} 예제 package ch08.sec06; public interface RemoteControl { //상수 필드 int MAX_VOLUME = 10; int MIN_VOLUME = 0; //추상 메소드 void turnOn(); void turnOff(); void setVolume(int volume); //디폴트 메소드 defau..
인터페이스에는 완전한 실행 코드를 가진 디폴트 메소드를 선언할 수 있다 추상 메소드는 실행부(중괄호{})가 없지만, 디폴트 메소드에는 실행부가 있다 public default 리턴타입 메소드명(매개변수, ...) { ... } 예제 package ch08.sec05; public interface RemoteControl { int MAX_VOLUME = 10; int MIN_VOLUME = 0; void turnOn(); void turnOff(); void setVolume(int volume); default void setMute(boolean mute) { if(mute) { System.out.println("무음"); setVolume(MIN_VOLUME); } else { System.ou..
인터페이스는 구현 클래스가 재정의해야 하는 public 추상 메소드를 멤버로 가질 수 있다 추상 메소드는 return 타입, 메소드명, 매개변수만 기술되고 중괄호{}를 붙이지 않는 메소드를 말한다 public abstract를 생략하더라도 컴파일 과정에서 자동으로 붙게 된다 public abstract 리턴타입 메소드명(매개변수, ...); 예제 package ch08.sec04; public interface RemoteControl { int MAX_VOLUME = 10; int MIN_VOLUME = 10; void turnOn(); void turnOff(); void setVolume(int volume); } package ch08.sec04; public class Television imp..