A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李光耀 中级黑马   /  2013-3-21 18:45  /  1903 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李光耀 于 2013-3-23 09:11 编辑

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

6 个回复

倒序浏览
内部类是如何被外部类访问的?

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

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


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();
        }
}


评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
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();

        }

}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
        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);
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~
回复 使用道具 举报
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.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报



比如
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()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马