익명 클래스(anonymous class)
·
자바/기본적인 개념
1. 익명 클래스란? - 클래스의 선언과 객체의 생성을 동시에 하기 때문에, 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다. - 특이하게도 다른 내부 클래스들과는 달리 이름이 없어서 ①생성자도 가질 수 없고, ②하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나, ③둘 이상의 인터페이스를 구현할 수 없다. - 오로지 하나의 클래스를 상속받거나 단 하나의 인터페이스만을 구현할 수 있다. 2. 이해를 돕기 위한 예제(1) (위 코드를 컴파일 한다면, 아래처럼 4개의 클래스 파일이 생성된다.) (a) (a$1.class) (a$2.class) (a$3.class) 3. 이해를 돕기 위한 예제(2) : 왜 익명 클래스를 사용하는 지를 설명하는 예제이다. ( 위의 코드를 가..
내부 클래스(inner class)
·
자바/기본적인 개념
1. 내부 클래스란? - 클래스 내에 선언된 클래스를 말한다. - 선언하는 이유는 두 클래스 사이에 서로 긴밀한 관계에 있기 때문이다. - 그러나, 내부 클래스는 주로 AWT 또는 Swing과 같은 GUI 어플리케이션의 이벤트 처리 외에는 잘 사용되지 않는다. 2. 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일 수 있다.(캡슐화) 3. 내부 클래스의 종류와 특징 - 변수 선언하는 것과 같은 위치에 선언할 수 있으며, 총 4가지가 있다. (1) 인스턴스 클래스 : 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다. (2) 스태틱 클래스 : 외부 클래스의 static 멤버, 특히 static 메서드에서 사용될 목적으로 선언..
인터페이스의 default & static 메서드
·
자바/기본적인 개념
1. static 메서드는 원래 인터페이스에서 사용 불가였다? - JDK 1.8 전에는 불가능했지만, 이제는 default와 static 메서드를 사용할 수 있게 되었다. - 옛날에는 java.util.Collection이라는 인터터페이스에 static 메서드가 있었는데 추상 메서드만 선언이 가능하다는 이유로 같이 넣지 못해서 Collections라는 클래스가 생성되게 되었다. - static 메서드 역시 앞에 public 접근 제어자가 있고, 생략 또한 가능하다. 2. 디폴트 메서드가 등장하게 된 배경 - 인터페이스에 새로운 메서드를 추가한다는 것은 엄청나게 까다롭다. 그 이유는 인터페이스로 구현한 클래스들이 전부 다시 구현해야 하기 때문이다. - 그러한 이유 때문에, default 메서드를 고안하여 ..
인터페이스 다형성
·
자바/기본적인 개념
1. 인터페이스 다형성 - 상속에서 다형성을 공부할 때, 자손 클래스의 인스턴스를 조상 타입의 참조변수로 참조하는 것이 가능하다는 것을 배웠다. 인터페이스 또한 그렇다. ( 단, c 참조 변수로는 c 인터페이스에서 정의한 것만 참조 가능하다. ) 2. 인터페이스 타입의 활용 ( 위의 인터페이스 타입의 method() 함수를 지정할 수 있는데, 리턴 타입이 인터페이스 라는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것을 의미한다. ) ( 또한 아래의 그림처럼 매개변수를 인터페이스의 타입으로 지정할 수 있는데, 이는 인터페이스를 구현한 클래스의 인스턴스를 전달하라는 소리와 마찬가지이다. ) 3. 이해를 돕기 위한 예제(1) Q) 19번째 줄에서 왜 오류가 날까? A) 리턴 타입이 ..