목록분류 전체보기 (639)
충분히 쌓여가는
인스턴스 멤버 클래스는 다음과 같이 A 클래스의 멤버로 선언된 B 클래스를 말한다 pulbic class A { public|private class B { } } 인스턴스 멤버 클래스 B는 주로 A 클래스 내부에서 사용되므로 private 접근 제한을 갖는 것이 일반적 B 객체는 A 클래스 내부 어디에서나 생성할 수 없고, 인스턴스 필드값, 생성자, 인스턴스 메소드에서 생성할 수 있다 A 객체가 있어야 B 객체도 생성할 수 있기 때문 package ch09.sec02.exam01; public class A { //인스턴스 멤버 클래스 class B {} //인스턴스 필드 값으로 B 객체 대입 B field = new B(); //생성자 A() { B b = new B(); } //인스턴스 메소드 vo..
클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다 중첩 클래스 클래스 내부에 선언한 클래스 클래스의 멤버를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다 멤버 클래스 클래스의 멤버로 선언되는 중첩 클래스 로컬 클래스 메소드 내부에서 선언되는 중첩 클래스 멤버 클래스 인스턴스 멤버 클래스 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..