java에서 내부 클래스 사용에 대한 상세한 설명

2883 단어 java 내부 클래스
내부 클래스 액세스 규칙
• 내부 클래스는 외부 클래스의 구성원을 직접 방문할 수 있으며, 사유를 포함한다.액세스 형식: 외부 클래스 이름.this • 외부 클래스가 내부 클래스에 접근하려면 내부 클래스 대상을 만들어야 합니다.내부 클래스는 구성원의 위치에서 구성원의 수식자에 의해 수식될 수 있다..

public class InnerClassDemo1 {
     public static void main(String[] args){
         Outer ou =new Outer();
         ou.method();// 4  3
         Outer.Inner oi =new Outer().new Inner();
         oi.function2();

     }

 }
 class Outer{
     private int x=3;
     class Inner{
         int x=4;
         void function1(){
             System.out.println(x);
             System.out.println(Outer.this.x);
         }
         void function2(){
             Outer.this.method();
         }
     }
     public void method(){
         Inner in =new Inner();
         in.function1();
     }
 }
정적 내부 클래스
• 내부류는 정적 구성원을 정의하고 내부류는 정적이어야 한다..

/*
  : , 。

 */
 class InnerClassDemo2
 {
     public static void main(String[] args)
     {
         new Outer.Inner().function();//
     }
 }
 class Outer
 {
     private static int x=5;
     static class Inner//
     {
         void function()
         {
             System.out.println("inner:"+x);
         }
     }
 }
부분 내부류
• 내부 클래스가 국부적으로 정의되어 있을 때 외부 클래스의 구성원에게 직접 접근할 수 있다.국부 변수에 접근하려면final로 수식되어야 합니다.

/*
  : , 。
  , final

 */

 class  InnerClassDemo3
 {
     public static void main(String[] args)
     {
         Outer out =new Outer();
         out.method(7);
     }
 }
 class Outer
 {
     int x=3;
     public void method(final int a)
     {
         class Inner
         {
             void function()
             {
                 System.out.println(a);
             }
         }
         new Inner().function();
     }
 }
익명 내부 클래스
• 익명 내부 클래스는 내부 클래스의 약자 형식이다.익명 내부 클래스의 전제: 내부 클래스는 하나의 클래스를 계승하거나 인터페이스를 실현해야 한다.익명 내부 클래스는 구조 함수를 만들 수 없습니다

/*
 
 1.
 2. 。
  
 3. :new (){ }
 */
 class InnerClassDemo4
 {
     public static void main(String[] args)
     {
         Demo d=new Demo()
         {
             void show()
             {
                 System.out.println(" show ");
             }
             void method()
             {
                 System.out.println(" method ");
             }
         }.show();
         d.method();
     }
 }
 abstract class Demo
 {
     abstract void show();
 }

좋은 웹페이지 즐겨찾기