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, privatestatic 수식자가 있을 수 없다.

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. 총결산
이상은 이 글의 전체 내용입니다. 여러분들이 자바를 공부하거나 사용하는 데 어느 정도 도움이 되었으면 좋겠습니다. 의문이 있으면 댓글로 소통해 주십시오.

좋은 웹페이지 즐겨찾기