首页

如何定义java内部类、内外部类同名成员间区分调用(示例说明)

标签:java基础,内部类,外部类     发布时间:2015-07-30   

一、前言

内部类是指在一个类(外部类)内部再定义类(一个或者多个),作为外部类成员,并随着他存在而存在。内部类与外部类之间是从属关系,内部类也可以访问外部类定义的私有成员。

二、示例说明

1.内部类定义示例如下:

public class OuterClass {@b@    @b@    private int s;@b@    @b@    /** 内部类定义及对外部类属性进行累加   */@b@    public  class  Inner{@b@        public void invokeOuter(){@b@            s++;@b@        }@b@    }@b@    @b@    /**  外部类调用内部类方法 */@b@    public  void  testInner(){@b@        Inner i=new Inner();@b@        i.invokeOuter();@b@    } @b@    @b@    public static  void  main(String[] args){@b@        @b@        /**外部类调用内部方法*/@b@        OuterClass outer1=new OuterClass();@b@        outer1.testInner();@b@        @b@        /**内部类创建及方法调用一*/@b@        OuterClass.Inner inner1=new OuterClass().new Inner();@b@        inner1.invokeOuter();@b@        @b@        /**内部类创建及方法调用二*/@b@        OuterClass outer2=new OuterClass();@b@        OuterClass.Inner inner2=outer2.new Inner();@b@        inner2.invokeOuter();@b@    } @b@    @b@}

2.当内部类和外部类都含有相同的成员变量或者方法时,如何区分调用,示例如下:

public class OuterClass {@b@    @b@    /**外部类成员变量s*/@b@    private int s=200;@b@    @b@    /** 内部类 */@b@    public  class  Inner{@b@        @b@        /**内部类成员变量s*/@b@        private int s=20;@b@        @b@        public void show(){@b@            //打印自己的成员变量s@b@            System.out.println(s);@b@            //打印外部类的成员变量s@b@            System.out.println(OuterClass.this.s);@b@        }@b@    }@b@ @b@    public static  void  main(String[] args){@b@        OuterClass.Inner inner1=new OuterClass().new Inner();@b@        inner1.show();@b@    }@b@}

运行结果如下:

20@b@200