> Java > java지도 시간 > [Java 기초] 내부 클래스와 그 특징에 대한 간략한 소개

[Java 기초] 내부 클래스와 그 특징에 대한 간략한 소개

php是最好的语言
풀어 주다: 2018-08-01 13:47:47
원래의
2282명이 탐색했습니다.

내부 클래스 정보

내부 클래스는 중첩 클래스입니다( A 중첩 클래스 유형), 중첩 클래스에는 네 가지 유형이 있습니다. [출처]

  1. static 중첩 클래스 정적 중첩 클래스는 일반 클래스에 가깝고 외부 참조가 없습니다. 클래스 ; 외부 클래스의 정적 **만 액세스할 수 있으며, 내부 클래스에 정적 **이 있는 경우 클래스는 정적이어야 합니다.

    내부 클래스 내부 클래스(비정적), 실제 내부 클래스
  2. local 클래스 로컬 클래스(메서드 내부에 정의됨), 실제 내부 클래스; 🎜🎜#
  3. # 🎜🎜#
  4. anonymous 클래스 익명 클래스, 진정한 내부 클래스, 한 번만 사용되며 몇 가지 메서드를 구현하는 클래스에 더 적합합니다.

  5. 실제 내부 클래스는 캡슐화된 외부 클래스의 인스턴스 변수 및 메서드에 직접 액세스할 수 있습니다. [출처]

    기능: [출처] # 🎜🎜#
  6. 1, 내부 클래스와 외부 클래스는 서로의 속성과 메서드에 액세스할 수 있습니다(프라이빗인 경우에도)(JAVA8)

1). 8 이전에는 익명 내부 클래스가 있습니다. Cycle Inconsistency [Java 기초] 내부 클래스와 그 특징에 대한 간략한 소개

2) 내부 클래스의 멤버 변수 범위는 메소드 실행이 끝나면 메소드 내에 유지됩니다. 로컬 변수는 사라지지만 내부적으로 참조가 존재할 수 있습니다. 존재하지 않는 변수에 접근하려고 할 때!

3) 따라서 final은 jdk8보다 먼저 사용해야 합니다. 디컴파일 후에는 내부 클래스가 실제로

생성자를 사용하여

클래스를 생성하고 참조된 변수가 외부 클래스 인스턴스를 포함하여 매개변수로 전달되는 것을 볼 수 있습니다(이것이 내부 클래스가 기본적으로 지속형 외부 객체에 대한 참조가 있어 쉽게 메모리 누수를 일으킬 수 있음) 그런 다음 자체 변수에 값을 할당합니다. 즉, 내부 클래스에서 외부 변수의 값이 변경되면 #🎜🎜 #실제로는 내부 클래스 자체 변수의 값만 변경됩니다.# 🎜🎜#은 외부 변수의 값이 아닙니다. 메소드가 변수를 전달하는 것처럼 메소드 내에서 해당 값을 변경할 수 없으므로 외부 변수가 변경됩니다. 메소드의 변수는 모두 로컬입니다. 따라서 이러한 불일치가 발생하는 것을 방지하려면 최종 버전이어야 합니다. [출처]

4), Java8에서는 내부 클래스가 외부 클래스 변수에 액세스할 때 내부 클래스가 외부 변수를 재할당하지 않는 한 외부 클래스가 사실상 최종이라는 개념을 도입합니다. 변수는 사실상 최종 변수이므로 Java는 암시적으로 외부 변수를 최종 변수로 선언합니다. [출처]

5) 왜 final인가요? 이유는 위에 간략하게 설명되어 있습니다. 기침~ 그리고 우수성을 위해 다시 자세히 설명하겠습니다. 변수가 final인 경우, 최종 로컬 변수는 "복사"됩니다. 로컬 내부 클래스의 데이터 멤버로서 로컬 내부 클래스가 로컬 변수에 액세스할 때 실제로 액세스되는 것은 실제 로컬 변수가 실행될 때 로컬 변수의 "복사본"입니다. 스택이 죽더라도 내부 클래스 객체는 여전히 지역 변수에 접근할 수 있습니다. 변수(복사하면 지역 변수의 수명이 연장된 것 같습니다), 지금까지는 final, O(∩_∩)O와 별로 관련이 없습니다. ㅎㅎ~ "final"이라는 이름에는 결국 final로 돌아가게 되는데, 변수는 final입니다: [출처]

1. 참조 유형: 참조 값은 변경되지 않고 그대로 유지됩니다. (항상 동일한 객체를 가리킵니다. ), 사본은 원본 참조변수와 동일 [출처]

#🎜🎜 #         2. 기본 자료형 : 변수가 final일 경우 값이 변하지 않으므로 사본은 참조변수와 동일 원래 수량과 의미적 효과는 같습니다 [출처]#🎜🎜 #

내부 클래스: [출처] #🎜🎜 #

논리적 소속을 반영하며, 내부 클래스를 제어할 수 있는 다른 클래스에는 보이지 않습니다

#🎜 🎜# 외부 클래스의 멤버 변수 범위는 외부 클래스 전체(내부 클래스를 포함하지만, 외부 클래스는 내부 클래스의 비공개 멤버에 액세스할 수 없습니다)

컴파일 후 내부 클래스는 별도의 클래스인 outClass$로 컴파일됩니다. innerClass의 형식

static:

정적 초기화: 정적 블록: 클래스 메서드 외부에 존재하는 정적 블록으로, 클래스가 로드될 때 한 번만 실행됩니다. 일반적으로 정적 클래스 속성을 초기화하는 데 사용됩니다.

1. 정적 메서드는 비정적 메서드로 재정의될 수 없습니다. 2. 생성자는 static으로 선언될 수 없습니다.

final: 최종 상태 특성

#🎜 🎜# 1, 기본 또는 하위 클래스에서 재정의할 수 없는 변수는 상수입니다

2. 선언 시 값을 할당합니다. 그렇지 않은 경우 값을 할당할 수 있는 기회는 단 한 번뿐입니다.

Exception:

일반적인 상황에서는 메서드를 종료시키는 finally 블록에서 return 또는 throw와 같은 문을 사용하지 마세요. 그렇지 않으면 try 블록과 catch 블록에서 오류가 발생합니다. return 및 throw 문은 유효하지 않으며 finally의 return 문으로 인해 예외가 손실됩니다. 【출처】【출처】

try...catch에서 여러 개의 catch가 있는 경우 상위 클래스의 예외는 하위 클래스의 예외 아래에 배치되어야 합니다. 그렇지 않으면 컴파일이 실패합니다. 테스트하기에는 너무 게으르지 않네요. 지나가는 동료들이 의견을 주실 수도 있습니다^_^

왜 내부 클래스와 예외를 함께 작성하는 경우가 많은가요? 다음 글은 이미 너무 싱글톤입니다

관련 글:

자바 기본의 내부 클래스 인스턴스에 대한 자세한 설명

자바 기본의 내부 클래스 인스턴스 코드에 대한 자세한 설명

관련 영상 :

내부 클래스 분류 및 회원 내부 클래스 직접 Use-JAVA 기본 입문 영상 튜토리얼

위 내용은 [Java 기초] 내부 클래스와 그 특징에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿