黑马程序员技术交流社区

标题: 内部类是如何被外部类访问的? [打印本页]

作者: 李光耀    时间: 2013-3-21 18:45
标题: 内部类是如何被外部类访问的?
本帖最后由 李光耀 于 2013-3-23 09:11 编辑

最好举个例子讲解一下,谢了~~{:soso_e134:}

作者: 唐永康    时间: 2013-3-21 18:56
内部类是如何被外部类访问的?

你的这个问题,没有具体的例子,可能是没有对内部类和访问机制理解,我说一个简单的例子,尽量简单的让你明白,

通过情况是在外部类中的一个方法中生成一个内部类的对象,这个来完成对内部类的访问,先了解这一种,当然还有其他方式,不过你先把简单的理解了再说,不会的再问问。


class Outer
{
        int y=1;
        class Iner
        {
                int x= 2;
                public void method()
                {
                        int i=3;
                        System.out.println(i);
                }
               
        }
        public void method()
        {
                int x = new Iner().x;
                System.out.println(x);
               
                new Iner().method();
        }
}



作者: 程媛媛    时间: 2013-3-21 18:57
class Outer{
        private int x;
        private void priMethod(){
                System.out.println("Outer of method");
                System.out.println("x="+x);
        }
       
        public void pubMethod(){
                Inner in = new Inner();//通过在外部类的方法中创建内部类对象,然后调用内部类的方法。
                in.inMethod();

        }
       
        class Inner{
               
                void inMethod(){
                        x = 8;//内部类中可以通过方法给外部类中的属性赋值。
                        priMethod();//在内部类中可以通过方法调用外部类的方法。
                       
                }
        }
}

public class Demo5 {

        public static void main(String[] args) {
                Outer out = new Outer();
                out.pubMethod();
                System.out.println("========================");
                Outer.Inner in = out.new Inner();//在同一包中的其他类中创建内部类。然后通过内部类对象访问内部类的方法
                in.inMethod();

        }

}
作者: 葛伟    时间: 2013-3-21 19:10
        public static void main(String[] args) {
                OutClass.InterClass out = new OutClass().new InterClass();
                out.print();
        }
}

// 创建一个外部类
class OutClass {
        String str = "我是外部类中的str";
        // 创建一个内部类
        class InterClass {
                // 创建一个内部类变量
                String str = "我是内部类中的str";
                // 定义一个内部类方法
                void print() {
                        System.out.println("外部类变量str:" + OutClass.this.str);
                        System.out.println("内部类变量str:" + this.str);
                }
        }
}

作者: 陈丽莉    时间: 2013-3-22 15:41
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~
作者: 田光峰    时间: 2013-3-22 16:38
public class parcel2{

   class Contents{            //内部类
      private int i=11;
      public int value(){ return i;}

}

   public Contents contents(){        //外部类方法

    retune new Comtents();


        }

   public Static void main(String[] args){

        parcel2 p=new parcel2();        //创建外部类对象
        parcel2.Contents=p.contents();  //创建内部类对象

          }


}

如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须像在mian()方法中那样,具体指明
这个对象的类型:OuterClassName.InnerClassName.
作者: lucy198921    时间: 2013-3-22 22:02



比如
public class A {
public static class B {
public String c = "";
public void D() {
}
}
}
要访问内部静态类B的成员c和方法D
则需要创建对象才行,如
A.B ab = new A.B();
String w = ab.c;
ab.D()




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2