Java 내부 클래스 간의 패키지 및 콜백 상세 정보
패키지 닫기 (closure) 는 호출 가능한 대상입니다. 이 정보는 역할 영역을 만드는 데 사용됩니다.이 정의를 통해 내부 클래스는 대상을 대상으로 하는 패키지임을 알 수 있다. 왜냐하면 외부 클래스 대상(내부 클래스를 만드는 역할 영역)의 정보를 포함할 뿐만 아니라 그 밖의 클래스 대상을 가리키는 인용도 자동으로 가지고 있기 때문이다. 이 역할 도시에서 내부 클래스는 모든 구성원을 조작할 권리가 있고private 구성원을 포함한다.
자바의 가장 논란이 되는 문제 중 하나는 자바는 리셋 (callback) 을 허용하기 위해 어떤 바늘과 유사한 메커니즘을 포함해야 한다고 생각하는 것이다.리셋을 통해 대상은 일부 정보를 휴대할 수 있으며, 이러한 정보는 잠시 후 어느 순간에 초기 대상을 호출할 수 있습니다.만약 리셋이 바늘을 통해 이루어진다면, 프로그래머가 이 바늘을 오용하지 않기를 기대할 수밖에 없다.
1. 구성원 내부 클래스
하나의 내부류를 하나의 구성원으로 간주할 수 있다.구성원 내부 클래스는 외부 클래스의 모든 구성원 속성과 구성원 방법에 무조건 접근할 수 있습니다.
class OutterClass {//
private int in = 0;
static int inn=4;
public OutterClass(int in) {
this.in = in;
}
class InnerClass { //
public void output() {
System.out.println(in);
System.out.println(inn);
}
}
}
구성원 내부 클래스가 외부 클래스와 같은 구성원 변수나 방법을 가지고 있을 때 기본적으로 구성원 내부 클래스에 접근하는 구성원입니다.외부 클래스의 동명 구성원에 액세스하려면 다음 형식으로 액세스해야 합니다.
OutterClass( ).this.
외부 클래스가 내부 클래스에 접근하려면 구성원 내부 클래스의 대상을 만들고 이 대상을 가리키는 인용을 통해 접근해야 합니다.
class OutterClass {
private int in = 0;
static int inn=4;
public OutterClass(int in) {
InnerClass inner=new InnerClass();
this.in=inner.innerNum;
}
class InnerClass { //
public int innerNum=1;
public void output() {
System.out.println(in);
System.out.println(inn);
int a=OutterClass.this.inn;
}
}
}
구성원 내부 클래스는 외부 클래스에 따라 존재한다. 즉, 구성원 내부 클래스의 대상을 만들려면 외부 클래스의 대상이 있어야 한다는 것이다.구성원 내부 클래스 객체를 작성하는 일반적인 방법은 다음과 같습니다.
public class classa {
public static void main(){
OutterClass oc=new OutterClass(3);
OutterClass.InnerClass in=oc.new InnerClass();
}
}
2. 부분 내부 클래스국부 내부류는 방법 안의 국부 변수와 같이
public
, protected
, private
및 static
수식자가 있을 수 없다.
class OutterClass {
public OutterClass(int in) {
class InnerClass { //
int innerNum=1;
}
}
}
3. 내부 클래스 중첩내포된 내부 클래스는
static
로 수식된 내부 클래스입니다.static
라고 성명된 내부 클래스는 내부 클래스와 외부 클래스 대상 간의 관계가 필요하지 않다. 즉, 우리는 직접 인용할 수 있다outer.inner
. 즉, 외부 클래스를 만들 필요도, 내부 클래스를 만들 필요도 없다.
class OutterClass {
public OutterClass(int in) {
}
static class InnerClass { //
int innerNum=1;
}
}
public class classa {
public static void main(){
OutterClass.InnerClass in=new OutterClass.InnerClass();
}
}
4. 익명 내부 클래스익명 내부류는 우리가 가장 많이 사용하는 것이다. 왜냐하면 우리는 그것에 이름을 부여하고 싶지 않기 때문에 익명이 생겼다.익명 내부 클래스는 미리 정의해야 합니다.
btnSan.setOnClickListener(newOnClickListener() {
@Override
publicvoidonClick(View v) {
}
});
5. 폐쇄와 리셋닫기 (Closure) 는 호출할 수 있는 객체로, 역할 영역을 만드는 정보를 저장합니다.JAVA는 패키지를 명시적으로 지원할 수 없지만 JAVA에서 패키지는'인터페이스 + 내부 클래스'를 통해 실현될 수 있다.
예를 들어 인터페이스 프로그래머와 기류 작가는 모두 같은 방법
work
을 가지고 같은 방법명을 가지지만 그 의미가 완전히 다르기 때문에 이때 패키지를 닫아야 한다.
class Writer {//
void work(){};
}
interface programmer{//
void work();
}
패키지 구현 코드는 다음과 같습니다.
public class WriterProgrammer extends Writer {
@Override
public void work(){
//
}
public void code(){
//
}
class ProgrammerInner implements programmer{
@Override
public void work(){
code();
}
}
}
하위 클래스에서 프로그래머 인터페이스 규칙에 따른 내부 클래스를 정의한 다음에 내부 클래스를 사용하여 프로그래머의 work()
방법을 리셋code()
하고 하위 클래스에서 상위 작가의 work()
방법을 직접 실현한다.6. 내부류의 역할
내부 클래스는 숨기기를 잘 실현할 수 있다.
일반적인 비내부류는
private
및 protected
권한이 허용되지 않지만, 내부류는내부 클래스는 외부 클래스의 모든 요소에 대한 접근 권한을 가지고 있다
그러나 다중 계승을 실현하다
인터페이스를 수정하는 것을 피하고 같은 클래스에서 두 가지 같은 이름의 방법을 호출할 수 있다.
7. 총결산
이상은 이 글의 전체 내용입니다. 여러분들이 자바를 공부하거나 사용하는 데 어느 정도 도움이 되었으면 좋겠습니다. 의문이 있으면 댓글로 소통해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.