분류 전체보기 889

JAVA 자바 중첩 인터페이스 Interface

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 중첩 인터페이스 클래스의 멤버로 선언된 인터페이스. class A { interface I { void method(); }} 예) 버튼을 클릭했을 때 이벤트를 처리하고 싶다고 하고, 아무 객체나 받으면 안 되고, 버튼 내부에서 선언된 중첩 인터페이스를 구현한 객체만 받아야 한다고 한다면, 아래와 같이 Button클래스를 선언하면 됩니다. public class Button { OnClickListener listener; void setOnClickListener(OnClickListener listener) { this.li..

자바 2017.03.13

JAVA 자바 중첩 클래스: 중첩 클래스의 접근 제한 - 로컬 클래스에서 사용 제한 / 중첩 클래스에서 바깥 클래스 참조 얻기

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 로컬 클래스에서 사용 제한 로컬 클래스 내부에서는 바깥 클래스의 필드나 메서드를 제한 없이 사용할 수 있습니다. 로컬 클래스의 객체는 메서드 실행이 끝나도 힙 메모리 영역에 존재해서 계속 사용될 수 있지만, 매개 변수나 로컬 변수는 메서드의 실행이 끝나면 스택 메모리 영역에서 사라지기 때문에 로컬 객체에서 사용할 수 없는 문제가 발생합니다. 로컬 클래스에서 사용 가능한 것은 final로 선언된 매개 변수와 로컬 변수 뿐입니다. 자바 8부터는 final 키워드 없이 선언된 매개 변수나 로컬 변수를 선언해도 컴파일 에러가 나지 않습..

자바 2017.03.13

JAVA 자바 중첩 클래스 : 중첩 클래스의 접근 제한 - 바깥 필드와 메서드에서 사용 제한, 멤버 클래스에서 사용 제한

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 바깥 필드와 메서드에서 사용 제한 멤버 클래스가 인스턴스 또는 정적으로 선언됨에 따라 바깥 클래스의 필드와 메서드에 사용 제한이 생깁니다.예제. B 클래스는 인스턴스 멤버이기 때문에 바깥 클래스의 인스턴스 필드의 초기값이나 인스턴스 메서드에서 객체를 생성할 수 있으나, 정적 필드의 초기값이나 정적 메서드에서는 객체를 생성할 수 없습니다. 반면에 정적 멤버 클래스인 C 클래스는 모든 필드의 초기값이나 모든 메서드에서 객체를 생성할 수 있습니다.public class A { //인스턴스 필드 B field1 = new B(); C ..

자바 2017.03.13

JAVA 자바 중첩 클래스: 인스턴스 멤버 클래스, 정적 멤버 클래스, 로컬 클래스

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 중첩 클래스클래스 내부에서 선언되는 위치에 따라 두 가지로 분류됩니다. 멤버 클래스 : 클래스의 멤버로서 선언되는 중첩 클래스.로컬 클래스 : 메서드 내부에서 선언되는 중첩 클래스 멤버 클래스와 로컬 클래스의 차이멤버 클래스 : 클래스나 객체가 사용 중이라면, 언제든지 재사용이 가능하지만, 로컬 클래스 : 메서드 샐행 시에만 사용되고 메서드가 실행 종료되면 없어집니다. 멤버 클래스도 하나의 클래스이기 때문에 컴파일하면 .class 파일이 별도로 생성됩니다. A $ B . class 바깥클래스 멤버클래스 로컬 클래스일 경우에는 아..

자바 2017.03.13

JAVA - 중첩 클래스와 중첩 인터페이스의 개념

중첩 클래스와 중첩 인터페이스의 개념클래스 내부에 선언한 클래스를 말합니다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. class ClassName { class NestedClass { } 중첩 클래스} 중찹 인터페이스 : 클래스 내부에 선언한 인터페이스. 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서 사용. class ClassName { interface NestedInterface { } // 중첩 인터페이스} 중첩 인터페이스는 주로 UI 프로그래밍에서 이벤트를 처리할 목적으로 많이 활용됩니다. 안드로이드에서는 아래와 같이 View 클래스의 클릭 이벤트를 처리하는 구현 ..

자바 2017.03.13

JAVA 자바 디폴트 메서드와 인터페이스 확장- 디폴트 메서드가 있는 인터페이스 상속

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 디폴트 메서드가 있는 인터페이스 상속 부모 인터페이스에 디폴트 메서드가 정의되어 있을 경우, 자식 인터페이스에서 디폴트 메서드를 사용하는 방법은 아래 세 가지가 있습니다.1. 디폴트 메서드를 단순히 상속만 받는다.2. 디폴트 메서드를 재정의(@Override)해서 실행 내용을 변경한다.3. 디폴트 메서드를 추상 메서드로 재선언한다. 이러한 부모 인터페이스가 있다고 할 때.public interface ParentInterface { public void method1(); public default void method2() {..

자바 2017.03.13

JAVA 자바 디폴트 메서드와 인터페이스 확장 - 디폴트 메서드의 필요성

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 디폴트 메서드와 인터페이스 확장 디폴트 메서드는 인터페이스에 선언된 인스턴스 메서드이기 때문에 구현 객체가 있어야 사용할 수 있습니다. 선언은 인터페이스에서 하고 사용은 구현 객체를 통한다는 것이 약간은 어색해 보이죠? 디폴트 메서드는 모든 구현 객체에서 공유하는 기본 메서드처럼 보이지만, 인터페이스에서 디폴트 메서드를 허용한 데에는 다른 이유가 있습니다. 디폴트 메서드의 필요성 디폴트 메서드를 허용한 이유 : 기존 인터페이스를 확장해서 새로운 기능을 추가하기 위해서 입니다. 기존 인터페이스의 이름과 추상 메서드의 변경 없이 디..

자바 2017.03.13

JAVA 자바 인터페이스 상속

인터페이스 상속 인터페이스도 다른 인터페이스를 상속할 수 있습니다. 또한 클래스와는 다르게 다중상속을 지원합니다. ex) public interface 하위인터페이스 extends 상위인터페이스1,상위인터페이스2 { ... } 하위 인터페이스를 구현하는 클래스는 하위 인터페이스와 상위 인터페이스의 모든 추상 메서드에 대한 실체 메서드를 가지고 있어아 합니다. 때문에 구현 클래스로부터 객체를 생성하고 나서 아래와 같이 하위 및 상위 인터페이스 타입으로 변환이 가능합니다. 하위인터페이스 변수 = new 구현클래스();상위인터페이스1 변수 = new 구현클래스();상위인터페이스2 변수 = new 구현클래스(); 하위 인터페이스 타입으로 변환이 되었다면, 상,하위 인터페이스에 선언된 모든 메서드를 사용가능하고 ..

자바 2017.03.13

JAVA 자바 인터페이스 강제 타입 변환 Casting 과 객체 타입 확인 instancof

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 강제 타입 변환 Casting 구현 객체가 인터페이스 타입으로 자동 타입 변환되면 인터페이스에 생성된 메서드만 사용가능하다는 제약 사항이 생깁니다. 예를 들어서 인터페이스에는 세 개의 메서드가 선언되어 있고, 클래스에는 다섯 개의 메서드가 선언되어 있다고 할 때 인터페이스로 호출가능한 메서드는 세 개뿐입니다. 경우에 따라 구현 클래스에 선언된 필드와 메서드를 사용해야 하는 경우도 있을 수 있겠죠?강제 타입 변환을 해서 다시 구현 클래스 타입으로 변환한 다음, 구현 클래스의 필드와 메서드를 사용할 수 있습니다.구현클래스 변수 = ..

자바 2017.03.13

JAVA 자바 인터페이스 매개 변수의 다형성

안녕하세요 알통몬입니다.공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!포스팅 내용이 찾아주신 분들께 도움이 되길 바라며더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ 매개 변수의 다형성매개값을 다양화하기 위해서 상속에서는 매개 변수를 부모 타입으로 선언하고 호출할 때에는 자식 객체를 대입했었습니다. 이번엔 매개 변수를 인터페이스 타입으로 선언하고 호출할 때에는 구현 객체를 대입합니다.ex) public class Driver { public void drive(Vehicle vehicle) { vehicle.run(); }} public interface Vehicle { public void run(); } }위 같은 코드가 있다고 할 때Bus 클래스가 구현 클래스라하면 아래와 같이 Dri..

자바 2017.03.13