Java 内部类(inner class)

内部类: 在类内部定义的类.

第一个程序:

用Test的getWrite()方法访问内部类InnerClass1方法

package  test;

public   class  Test  {
    
/*
     *Inner Class 
     
*/

     
class InnerClass1 {  
        
public void write() {
            System.out.println(
"Hello :" + this.getClass());
        }

    }

     
public void getWrite(){
         InnerClass1 inner1 
= new InnerClass1();
         inner1.write();
     }

    
public static void main(String[] arg) {
        
        Test test
=new Test();
        test.getWrite();
    }

}

 第二个程序:

 用Test  方法返回 InnerClass 的实例

package  test;

public   class  Test2  {
    
/*
     * Inner Class
     
*/

    
class InnerClass1 {
        
public void write() {
            System.out.println(
"Hello :" + this.getClass());
        }

    }


    
public InnerClass1 getWrite() {

        
return new InnerClass1(); //返回InnerClass1的实例
    }


    
public static void main(String[] arg) {

        Test2 test 
= new Test2();
        Test2.InnerClass1 inner 
=test.getWrite();
        inner.write();
        

    }

}

第三个程序

内部类继承父类

package  test;




public   class  Test3  {
    
/*
     * Inner Class
     
*/

    
class InnerClass1 {
        
public void write() {
            System.out.println(
"Hello :" + this.getClass());
        }

    }

        
class InnerClass2 extends InnerClass1 {// 继承InnerClass1
    }

    
public InnerClass1 getWrite() {

        
return new InnerClass1(); // 返回InnerClass1的实例
    }

    
public InnerClass2 getWrite2() {

        
return new InnerClass2(); // 返回InnerClass2的实例
    }


    
public static void main(String[] arg) {
        Test3 test3
=new Test3();
        Test3.InnerClass2 inner2
=test3.getWrite2();
        inner2.write();

    
        

    }

}


第三个程序

通过.this 生成对外部类的引用

 

package  test;

import  test.Test3.InnerClass1;
import  test.Test3.InnerClass2;

public   class  Test4  {
    
/*
     * Inner Class
     
*/


    
class InnerClass1 {
        
public void write() {
            System.out.println(
"Hello :" + this.getClass());
        }

        
public Test4 getOuter(){
            
return Test4.this;  //通过.this 返回Test4的引用
        }

    }


    
public InnerClass1 getInner() {

        
return new InnerClass1(); // 返回InnerClass1的实例
    }


    
public void write() {

        System.out.println(
"Hello :OutClass");
    }


    
public static void main(String[] arg) {
        Test4 test
=new Test4();
        Test4.InnerClass1 inner
=test.getInner();
        inner.getOuter().write();
    }

}

 第五个程序

.new 直接创建内部类的实例

 

package  test;

import  test.Test3.InnerClass1;
import  test.Test3.InnerClass2;

public   class  Test5  {
    
/*
     * Inner Class
     
*/


    
class InnerClass1 {
        
public void write() {
            System.out.println(
"Hello :" + this.getClass());
        }

        
    }

    
public static void main(String[] arg) {
        Test5 test
=new Test5();
        Test5.InnerClass1 inner
=test.new InnerClass1(); //直接创建内部类的对象
        inner.write();
        
    }

}

 

                                                                                                                                                    ~~~~Kyle

你可能感兴趣的:(Java 内部类(inner class))