내부 클래스 (2)
1.4 네스트된 클래스
내부 클래스 대상과 외부 클래스 대상 간의 관계가 필요하지 않으며 내부 클래스를static로 성명합니다.이것은 통상적으로 끼워 넣는 종류라고 불린다.
일반 (비static) 내부 클래스에서 특수한this 인용을 통해 외부 클래스에 연결할 수 있습니다.플러그인 클래스는 이 특수한this 인용이 없기 때문에static 방법과 유사하다
4
4
interface Destination {
String readLabel();
}
interface Contents {
int value();
}
public class Parcel2 {
private static class ParcelContents implements Contents {
private int i = 11;
@Override
public int value() {
return i;
}
}
private static class ParcelDestination implements Destination {
private String label;
private ParcelDestination(String whereTo) {
label = whereTo;
}
@Override
public String readLabel() {
return label;
}
public static void f() {}
static int x = 10;
static class AnotherLevel {
public static void f() {}
static int x = 10;
}
}
public static Destination destination(String s){
return new ParcelDestination(s);
}
public static Contents contents(){
return new ParcelContents();
}
public static void main(String[] args) {
Contents c = contents();
Destination d = destination("China");
}
}
1.4.1 인터페이스 내부의 클래스
정상적인 상황에서 인터페이스 내부에 어떠한 코드도 설치할 수 없지만, 플러그인 클래스는 인터페이스의 일부분이 될 수 있다.인터페이스에 놓인 모든 종류는 자동적으로public와static입니다.그래서 우리는 클래스를 다음 예에서 보듯이 내부 클래스에서 그 외곽 인터페이스를 실현할 수 있다.
public interface ClassInInterface {
void howdy();
class Test implements ClassInInterface{
@Override
public void howdy() {
System.out.println("Howdy!");
}
public static void main(String[] args) {
new Test().howdy();
}
}
}
실행 결과:
Howdy!
어떤 공통 코드를 만들어서 인터페이스의 모든 차이에 의해 공용될 수 있도록 하려면 인터페이스 내부의 플러그인 클래스를 사용할 수 있습니다.
1.4.2 다중 플러그인 클래스에서 외부 클래스에 접근하는 구성원
내부 클래스가 얼마나 많이 끼워져 있는지는 중요하지 않다. 내부 클래스가 끼워 넣은 모든 외곽 클래스의 모든 구성원을 투명하게 접근할 수 있다.
class MNA {
private void f() {
System.out.println("f()");
}
class A {
private void g() {
System.out.println("g()");
}
public class B {
void h() {
System.out.println("h()");
g();
f();
}
}
}
}
public class MultiNestingAccess {
public static void main(String[] args) {
MNA mna = new MNA();
MNA.A mnna = mna.new A();
MNA.A.B mnnab = mnna.new B();
mnnab.h();
}
}
실행 결과:
h()
g()
f()
예에서 우리는 MNA를 알 수 있다.A.B에서 호출 방법 g()와 h()는 private로 정의되어도 아무런 조건이 필요하지 않습니다.
4
4
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.