목록이것이 자바다 (108)
충분히 쌓여가는
클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다 중첩 클래스 클래스 내부에 선언한 클래스 클래스의 멤버를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다 멤버 클래스 클래스의 멤버로 선언되는 중첩 클래스 로컬 클래스 메소드 내부에서 선언되는 중첩 클래스 멤버 클래스 인스턴스 멤버 클래스 class A { class B { ... } } A 객체를 생성해야만 B 객체를 생성할 수 있음 정적 멤버 클래스 class A { static class B { ... } } A 객체를 생성하지 않아도 B 객체를 생성할 수 있음 로컬 클래스 cla..
인터페이스도 다른 인터페이스를 상속할 수 있으며, 클래스와는 달리 다중 상속을 허용한다 extends 키워드 뒤에 상속할 인터페이스들을 나열 public interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 {...} 자식 인터페이스의 구현 클래스는 자식 인터페이스의 메소드뿐만 아니라 부모 인터페이스의 모든 추상 메소드를 재정의해야 한다 그리고 구현 객체는 자식 및 부모 인터페이스 변수에 대입될 수 있다 자식인터페이스 변수 = new 구현클래스(...); 부모인터페이스1 변수 = new 구현클래스(...); 부모인터페이스2 변수 = new 구현클래스(...); 구현 객체가 자식 인터페이스 변수에 대입되면 자식 및 부모 인터페이스의 추상 메소드를 모두 호출할 수 있으나, 부모 인..
구현 객체는 여러 개의 인터페이스를 implements 할 수 있다 public class 구현클래스명 implements 인터페이스A, 인터페이스B { //모든 추상 메소드 재정의 } 인터페이스A와 인터페이스B를 구현한 객체는 두 인터페이스 타입의 변수에 각각 대입될 수 있다 인터페이스A 변수 = new 구현클래스명(...); 인터페이스B 변수 = new 구현클래스명(...); 구현 객체가 어떤 인터페이스 변수에 대입되느냐에 따라 변수를 통해 호출할 수 있는 추상 메소드가 결정된다 SmartTelevision은 RemoteControl 인터페이스와 Searchable 인터페이스를 모두 구현하였다 package ch08.sec08; public interface RemoteControl { void tu..
인터페이스의 상수 필드, 추상 메소드, 디폴드 메소드, 정적 메소드는 모두 public 접근 제한을 갖는다 이 멤버들을 선언할 때는 public을 생략하더라도 컴파일 과정에서 public 접근 제한자가 붙어 항상 외부에서 접근이 가능하다 인터페이스 외부에서 접근할 수 없는 private 메소드 선언도 가능 private 메소드 구현 객체가 필요한 메소드 private 정적 메소드 구현 객체가 필요 없는 메소드 private 메소드는 디폴트 메소드 안에서만 호출이 가능 private 정적 메소드는 디폴트 메소드뿐만 아니라 정적 메소드 안에서도 호출 가능 private 메소드의 용도 디폴트와 정적 메소드들의 중복 코드를 줄이기 위함 package ch08.sec07; public interface Servi..