黑马程序员技术交流社区
标题:
成员内部类没搞懂
[打印本页]
作者:
569015640
时间:
2015-10-11 09:43
标题:
成员内部类没搞懂
.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);
}
}
}
作者:
挽子青丝
时间:
2015-10-11 10:49
代码没问题吧?我也是新手。
作者:
zhonghui
时间:
2015-10-11 11:28
说一下个人理解:
在提出了内部类这个概念以后,一个类里面可以容纳的东西其实是增加到了四种:成员变量,成员方法,构造方法以及代码块(用于类或对象的初始化),内部类。当然,通俗地说,一个类的常住居民还是成员变量,成员方法和构造方法,每个类都可以包含这三个成分,当然内部类也不例外。个人觉得内部类说到底不过是把一个类放在了另一个类里面,内部类成了外部类的一部分。
首先,内部类作为一个类,他肯定是具有一般的类的功能和作用,换句话说,一般类能怎么操作,内部类同样可以这样操作。例如一般的类需要实例化对象后调用成员变量和方法,内部类同样需要实例化对象来调用成员或方法(当然如果是静态的,一般类可以通过类名调用,内部类也一样),这类的共同属性,不管内部外部类;
第二:内部类既然放在了外部类的里面,成了外部类的一个成员,对于自己的成员,外部类当然要显示出自己的管辖能力。恰如小孩(内部类)和监护人(外部类),首先他们同样是人,具有人的一般属性,但是监护人不会让小孩单独干事,小孩干什么首先需要征得监护人的同意。所以说,在第一段代码中,
Inner i = new Inner(); //类似于不通知监护人, 直接叫小孩去干事, 监护人自然是不会同意的
i.method();如果要调用内部类的方法,必须通过外部类(类似于先把监护人叫来,告知监护人,然后监护人领着小孩去干活),这样,首先要实例化外部类,再实例化内部类:new Outer().new Inner(),返回的值需要同等的数据类型来接收,这里的数据类型是:Outer.Inner 就类似于来人是: 张家的(外部类).小孩(内部类)
这样就可以调用内部类的方法了
oi.method();
以上是个人的理解,希望与你有用,论坛藏龙卧虎,还请大神斧正。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2