개요
최근 Python을 배우면서 Python이 더 많은 상속을 지원한다는 것을 발견했습니다. 이는 내부 클래스에서 구현 된이 메커니즘을 상기시켜줍니다. 이 기사는 내부 클래스를 통해 더 많은 상속을 달성하는 방법에 관한 것이 아니라 내부 클래스의 유형과 사용 방법을 요약합니다.
Java 내부 클래스는 다음과 같이 나뉩니다.
내부 클래스는 Android 소스 코드에서 대량으로 사용됩니다.
다음으로 이러한 내부 클래스를 각각 소개하십시오.
비 스틱 내부 클래스
클래스가 다른 클래스의 비 종교적 멤버 인 경우이 클래스는 비 종합적인 내부 클래스입니다.
비 스틱 내부 클래스를 생성하는 예제 코드는 다음과 같습니다.
클래스 아웃 클래스 {클래스 내부 클래스 {}}
Javac을 컴파일하면 두 개의 .class 파일이 생성 된 것을 발견했습니다 : OutClass.class 및 OutClass $ innerclass.class. 아래 그림과 같이 :
외부 클래스의 비 스틱 방법에서 내부 클래스
외부 클래스에서 내부 클래스에 쉽게 액세스 할 수 있습니다. 예제 코드는 다음과 같습니다.
공개 클래스 {private static int a = 0; .MakeInner ();} Class InnerClass {public void seeouter () {system.out.println (a);결과는 다음과 같습니다.
0
외부 클래스의 정적 메소드에서 내부 클래스
외부 클래스에서 내부 클래스에 액세스하는 것은 비교적 간단하지만 내부 클래스 객체를 직접 얻을 수 있지만 외부 클래스에서 내부 클래스를 사용하려면 NW의 내부 클래스 이름을 직접 사용할 수 없습니다.
OutClass.innerclass 내부 클래스 = New OutClass ();
다시 말해, 비 종종 내부 클래스는 먼저 인스턴스화되어야하며 외부 클래스 객체를 통해 인스턴스화 된 내부 클래스가 사용됩니다. 예제 코드는 다음과 같습니다.
공개 클래스 {private static int a = 0; .innerclass 내부 클래스 ().
실행 결과 :
01
내부 클래스 에서이 참조
일반 클래스는 내부 클래스뿐만 아니라 현재 객체를 참조 할 수 있습니다. 그러나 내부 클래스가 외부 클래스의 현재 객체를 인용하려면 어떻게해야합니까? 다음과 같은 방법을 사용할 수 있습니다.
외부 이름
예제 코드는 다음과 같습니다.
공개 클래스 {private static int a = 0; .innerclass 내부 클래스 (). }}}
정적 내부 클래스
비 스틱 내부 클래스는 위에서 소개됩니다.
정적 내부 클래스는 외부 클래스에서 정적 멤버의 역할이며 비 정체 내부 클래스의 생성은 매우 유사하지만 클래스 앞에는 추가 정적 수정자가 있습니다.
정적 수정자를 사용하여 외부 클래스를 수정할 수 없습니다.
예제 코드는 다음과 같습니다.
클래스 아웃 클래스 {정적 클래스 내부 클래스 {}}
Javac 명령과 함께 아래 그림과 같이 두 개의 .class 파일이 있음을 알 수 있습니다.
외부 클래스의 비 종교적 메소드에서 내부 클래스의 정적 내부 클래스
외부 클래스에서 정적 내부 클래스를 방문하는 것은 외부 카테고리의 비 종교적 내부 클래스와 동일합니다. 그러나 현재 정적 내부 클래스는 외부 클래스의 정적 멤버에만 액세스 할 수 있으며 비 종종 멤버에 액세스 할 수 없다는 점에 유의해야합니다.
예제 코드는 다음과 같습니다.
공개 클래스 아웃 클래스 {개인 정적 int a = 0; OutClass oclass = New OutClass (); println (b);}}}
실행 결과는 다음과 같습니다.
아웃 클래스 $ 내부 클래스@79a3400
외부 정적 메소드에서 정적 내부 클래스의 내부 분류
알아채다:
정적 내부 클래스는 외부 클래스의 정적 멤버이고 정적 멤버는 인스턴스화 된 객체의 대상이 아니라 클래스에 묶여 있기 때문입니다. 따라서 외부 클래스의 정적 메소드의 내부 클래스는 외부 클래스를 먼저 인스턴스화 할 필요가 없습니다.
예제 코드는 다음과 같습니다.
공개 클래스 아웃 클래스 {개인 정적 int a = 0; OutClass oclass = New OutClass.MakeInner (); innerclass.innerclass.innerclass (); this); System.out.out (a);
익명의 내부 클래스
익명의 내부 클래스는 Android 응용 프로그램 개발에 홍수가 발생합니다.
익명의 내부 클래스는 이것이 카테고리가없는 내부 클래스임을 알 수 있으며, 이는 일반적으로 코드를 단순화하는 데 사용됩니다.
Java를 쓰는 학생들은 스레드를 사용하면 런닝 가능한 객체 나 익명의 내부 수업을 전달할 수 있습니다. 예제 코드는 다음과 같습니다.
public class outclass {public void testanonymousclass () {스레드 t = 새 스레드 (new runnable () {@override public void run () {for (int i = 0; i <10; i ++) {system.out.println (i); {thread.sleep (500);} catch (e.printstacktrace ();}}; . ");} public static void main (string [] args) {outclass oclass = new outClass (); oclass.testanonymousClass ();}}
실행 결과는 다음과 같습니다.
다른 스레드가 실행 중입니다 ...