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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔九 中级黑马   /  2012-8-27 00:00  /  2218 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;
class Outer
{
        private int x=3;
        private void function()
        {
                System.out.println(x);
        }
        class Inner
        {
                Inner in=new Inner();
                System.out.println("inner"+x);
               
        }
       
}
public class Test8
{
   public static void main(String[] args)
   {
          
   }
}
怎么样创建一个内部类它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
哥们你是不是把黑马考试题扔上来了???
回复 使用道具 举报
内部类的访问规则:
1,内部类可以直接访问外部类中的成员,包括私有。
        之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this
2,外部类要访问内部类,必须建立内部类对象。

访问格式:
1,当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。
可以直接建立内部类对象。
格式
        外部类名.内部类名  变量名 = 外部类对象.内部类对象;
        Outer.Inner in = new Outer().new Inner();

2,当内部类在成员位置上,就可以被成员修饰符所修饰。
        比如,private:将内部类在外部类中进行封装。
                static:内部类就具备static的特性。
                当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限。

                在外部其他类中,如何直接访问static内部类的非静态成员呢?
                new Outer.Inner().function();

                在外部其他类中,如何直接访问static内部类的静态成员呢?
                uter.Inner.function();

        注意:当内部类中定义了静态成员,该内部类必须是static的。
                  当外部类中的静态方法访问内部类时,内部类也必须是static的。



       
当描述事物时,事物的内部还有事物,该事物用内部类来描述。
因为内部事务在使用外部事物的内容。

class Body
{
        private class XinZang
        {

        }

        public void show()
        {
                new XinZang().
        }
       
}





*/
class Outer
{
        private static  int x = 3;

       
        static class Inner//静态内部类
        {
                static void function()
                {
                        System.out.println("innner :"+x);
                }
        }

        static class Inner2
        {
                void show()
                {
                        System.out.println("inner2 show");
                }
        }

        public static void method()
        {
                //Inner.function();
                new Inner2().show();
        }

}


class  InnerClassDemo2
{
        public static void main(String[] args)
        {
                Outer.method();
                //Outer.Inner.function();
                //new Outer.Inner().function();
                //直接访问内部类中的成员。
//                Outer.Inner in = new Outer().new Inner();
//                in.function();
        }
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1 内部类就是放在别的类的里面的类。可以放在成员位置上 以及 函数的局部。
2 内部类可以直接访问外部类的成员数据和方法。
3 外部类要访问内部类就必须先建立内部类的对象。创建对象时要记得加外部类名。
回复 使用道具 举报
贾飞雨 发表于 2012-8-27 00:25
哥们你是不是把黑马考试题扔上来了???

:lol......
回复 使用道具 举报
黄树人 发表于 2012-8-27 01:27
内部类的访问规则:
1,内部类可以直接访问外部类中的成员,包括私有。
        之所以可以直接访问外部类中的成员 ...

恩。。。明白了
回复 使用道具 举报
本帖最后由 RWJ2012 于 2012-8-27 10:19 编辑

这是我的基础测试题的第六题,是我做的,比较简单。可以参考下:
  1. package com.itheima;
  2. /*
  3. * 6、 创建一个包含有private的属性和private方法的类。然后创建一个内部类,
  4. * 它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一
  5. * 个方法中,创建此内部类的对象,并且调用它的方法。
  6. */
  7. public class Test6 {

  8.         public static void main(String[] args) {
  9.                 A a = new A();
  10.                 a.play2();
  11.         }

  12. }

  13. class A {
  14.         //创建一个包含有private的属性
  15.         private int age;
  16.         //创建一个包含有private的方法
  17.         private void play1() {
  18.                 System.out.println("I has been invoked!");
  19.         }
  20.         class B {
  21.                 public void changeValue(int value) {
  22.                         age = value;
  23.                         System.out.println("age="+age);
  24.                         play1();
  25.                 }
  26.         }
  27.         
  28.         public void play2(){
  29.                 B b = new B();
  30.                 b.changeValue(10);
  31.         }
  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

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