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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊其杰 中级黑马   /  2013-3-18 22:51  /  2679 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

具体代码怎么实现?

评分

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

查看全部评分

9 个回复

倒序浏览
实例化的方法就是 外部类.内部类 name = new 外部类.内部类();的方式,至于内部属性,就得看是什么样的访问权限

评分

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

查看全部评分

回复 使用道具 举报
新建内部类对象,用对象来访问内部类的方法和变量
回复 使用道具 举报
package cn.itcast.test;

public class Test1 {

        /**
         * @param args
         */
        public static void main(String[] args) {

                outer.inner in=new outer().new inner();
                in.show();
        }


}
package cn.itcast.test;

        class outer{
                class inner{
                        public void show(){
                                System.out.println();
                        }
                }
        }
就这样就可以实现方法的调用的

评分

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

查看全部评分

回复 使用道具 举报
哥们,首先你要明白外部类访问内部,需要建立内部类的实例;而内部类可以直接访问外部类中的成员包括私有的!
下面的代码你看下应该就可以明白:

package cn.luo;

class Outer {
        private int x = 9;//外部类私有的成员变量
        class Inner {
                public void show() {
                        System.out.println("内部类中的show" + "...."+x);//内部类直接访问了
                }
        }

        /*
         * 创建一个方法,方法内部创建内部类的实例,并用内部类的 对象调用内部类的方法
         */
        public void method() {
                Inner in = new Inner();
                in.show();
        }
}

public class InnerClass {
        public static void main(String[] args) {
                // 实例化外部类,用外部类调用他的method();
                Outer o = new Outer();
                o.method();
        }
}
其实还有其他的方法,还有匿名内部类的访问,那些你自己可以看看毕老师的视频!

评分

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

查看全部评分

回复 使用道具 举报
外部类要访问内部类,必须建立内部类对象
访问格式:

当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,直接建立内部类对象。
格式:

外部类名.内部类名  变量名 = 外部类对象.内部类对象;

Outer.Inner in = new Outer().new Inner();
  1. class Outer
  2. {
  3.         private int x = 3;
  4.         class Inner//内部类
  5.         {
  6.                 //int x = 4;
  7.                 void function()
  8.                 {
  9.                         //int x = 6;
  10.                         System.out.println("innner :"+Outer.this.x);//Outer.this.可省略
  11.                 }                                        //因为内部类可以访问外部类
  12.         }
  13.         void method()
  14.         {
  15.                 Inner in = new Inner();
  16.                 in.function();
  17.         }
  18. }
  19. class  InnerClassDemo
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 Outer out = new Outer();
  24.                 out.method();
  25.                 //直接访问内部类中的成员。
  26. //                Outer.Inner in = new Outer().new Inner();
  27. //                in.function();
  28.         }
  29. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
用NEW关键字来进行实例化
方法就是
外部类.内部类 name(可以随便写但是要有意义) = new 外部类.内部类();的方式,至于内部属性,就得看是什么样的访问权限

评分

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

查看全部评分

回复 使用道具 举报
1、当内部类在外部类的成员位置上,而且非私有,可以在其他外部类中直接建立内部类对象。格式:Outer.Inner in=new Outer().new Inner()
2、当内部类定义在外部类的成员位置且被static修饰,在外部其他类中,如果访问内部类中的非静态方法function(),就是new Outer.Inner().function();如果访问静态的function(),就是Outer.Inner().function()

评分

参与人数 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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马