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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 569015640 中级黑马   /  2015-10-11 09:43  /  608 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

.class Demo1_InnerClass {
        public static void main(String[] args) {
                //Inner i = new Inner();
                //i.method();
                //外部类名.内部类名 = 外部类对象.内部类对象
                Outer.Inner oi = new Outer().new Inner();                        //创建内部类对象
                oi.method();

        }
}

/*
* A:内部类概述
* B:内部类访问特点
        * a:内部类可以直接访问外部类的成员,包括私有。
        * b:外部类要访问内部类的成员,必须创建对象。
        * 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
* C:案例演示
        * 内部类极其访问特点
*/

class Outer {
        private int num = 10;
        class Inner {
                public void method() {
                        System.out.println(num);
                }
        }
}

2 个回复

倒序浏览
代码没问题吧?我也是新手。
回复 使用道具 举报
说一下个人理解:
在提出了内部类这个概念以后,一个类里面可以容纳的东西其实是增加到了四种:成员变量,成员方法,构造方法以及代码块(用于类或对象的初始化),内部类。当然,通俗地说,一个类的常住居民还是成员变量,成员方法和构造方法,每个类都可以包含这三个成分,当然内部类也不例外。个人觉得内部类说到底不过是把一个类放在了另一个类里面,内部类成了外部类的一部分。
首先,内部类作为一个类,他肯定是具有一般的类的功能和作用,换句话说,一般类能怎么操作,内部类同样可以这样操作。例如一般的类需要实例化对象后调用成员变量和方法,内部类同样需要实例化对象来调用成员或方法(当然如果是静态的,一般类可以通过类名调用,内部类也一样),这类的共同属性,不管内部外部类;
第二:内部类既然放在了外部类的里面,成了外部类的一个成员,对于自己的成员,外部类当然要显示出自己的管辖能力。恰如小孩(内部类)和监护人(外部类),首先他们同样是人,具有人的一般属性,但是监护人不会让小孩单独干事,小孩干什么首先需要征得监护人的同意。所以说,在第一段代码中,
    Inner i = new Inner(); //类似于不通知监护人, 直接叫小孩去干事,  监护人自然是不会同意的
    i.method();如果要调用内部类的方法,必须通过外部类(类似于先把监护人叫来,告知监护人,然后监护人领着小孩去干活),这样,首先要实例化外部类,再实例化内部类:new Outer().new Inner(),返回的值需要同等的数据类型来接收,这里的数据类型是:Outer.Inner  就类似于来人是:  张家的(外部类).小孩(内部类)

这样就可以调用内部类的方法了
oi.method();

以上是个人的理解,希望与你有用,论坛藏龙卧虎,还请大神斧正。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马