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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

本帖最后由 李光耀 于 2013-3-22 12:34 编辑

内容同标题。。 有时间的劳烦过来瞄一眼,最好举个例子{:soso_e134:}

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-21 22:59

7 个回复

倒序浏览
1.当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。可以直接建立内部类对象。
格式:
         外部类名.内部类名变量名 =外部类对象.内部类对象;
         Outer.Inner in = newOuter().new Inner();
        2.当内部类在成员位置上时,就可以被成员修饰符所修饰。
         比如,private:将内部类在外部类中进行封装。
           static:内部类就局部static的属性。
         当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限。
        3.当内部类定义在局部时,不可以被成员修饰符修饰,可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不可以访问所在局部中的变量,只能访问被final修饰的局部变量。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
多看看老师的视频,视频中讲解的很清楚的。加油
回复 使用道具 举报
内部类访问规则:
1.内部类可以直接访问外部类成员,包括私有的;
     之所以能访问是因为省略了 “外部类名.this”
2.外部类访问内部类需建立内部类对象
这是我之前的练习,你看下,有的地方我没注释、
class Outer
{
         int x=5;
          void show()
         {
                  int x=8;
                  Inter in = new Inter();//外部类访问内部类需建立内部类对象
                 //System.out.println("out"+x);//相当于Outer.this.x
                 System.out.println("in"+in.x);
         }
         class Inter
         {
                 int x=3;
                 void show()
                 {
                         //int x=11;
                         System.out.println("inter"+x);
                 }
         }
}
class OutClassDemo1
{
         public static void main(String[] args)
         {
                 Outer.Inter in = new Outer().new Inter();//外部类访问内部类的格式
                 in.show();
                 Outer out = new Outer();
                 out.show();
         }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
内部类的访问规则:(内部类与外部类的互访)
  1,内部类可以直接访问外部类中的成员,包括私有。
        这是因为内部类中持有一个外部类的引用,格式:外部类名.this
  2,外部类要访问内部类,必须建立内部类对象。
day09天有讲过,很详细的!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
这个小程序演示了如何在内部类中访问外部类的同名属性或方法。
    如果内部类中没有与外部类同名的属性或方法,那么直接引用外部类的属性或方法即可,见Inner类的定义。
    但如果存在同名的属性或方法,就要在内部类中先取得外部类的引用,通过这个引用来访问外部类的同名属性或方法。有两个方法来取得外部类的引用:
    一种方法是,通过外部类的类名来取得外部类当前的引用,见Inner1类的定义;
    另一种方法是,把外部类的引用显式传给内部类的构造方法,见Inner2类的定义。
    可见,第一种方法简单一些。
    注意:[类名.this]的用法只能在内部类中使用。
public class Test1 {

    private int a = 5;

    public Test1() {

        new Inner().print();
        new Inner1().print();
        new Inner2(this).print();

    }

  public static void main(String[] args) {

        new Test1();
    }

     private class Inner {

        private void print() {

            System.out.println("Inner直接取得外部的属性a=" + a);
            System.out.println();

        }

    }

  private class Inner1 {

        private int a = 10;

        private void print() {

            System.out.println("Inner1的属性a=" + this.a);
            System.out.println("Inner1通过第一种方法取得外部的属性a=" + Test1.this.a);
            System.out.println();

        }

    }

  private class Inner2 {

        private int a = 20;

        private Test1 t;

        private Inner2(Test1 t) {
            this.t = t;
        }
     private void print() {

            System.out.println("Inner2的属性a=" + this.a);
            System.out.println("Inner2通过第二种方法取得外部的属性a=" + this.t.a);
            System.out.println();

        }

    }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
可见 中级黑马 2013-3-22 17:19:59
7#
顶 一个 好好学习~~
回复 使用道具 举报
黄玉昆 黑马帝 2013-3-23 08:18:22
8#
请不要越版块发相同的帖子,请看滔哥关于黑马论坛2013年加分及其惩罚规则的帖子:http://bbs.itheima.com/thread-40602-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马