黑马程序员技术交流社区
标题:
新人自学,关于内部类实例化的问题,求解……
[打印本页]
作者:
selectgoodboy
时间:
2013-4-17 22:29
标题:
新人自学,关于内部类实例化的问题,求解……
本帖最后由 selectgoodboy 于 2013-4-17 22:30 编辑
package com.itheima;
/**
* 第8题:创建一个包含实例内部类的类,外部类中定义一个名为str的String字符串并初始化任意值,在内部类中定义跟外部类同种类型且同名的变量,
* 并在内部类中定义一个方法,分别打印外部类和内部类的变量.
*/
public class Test8 {
public static void main(String[] args) {
outer a = new outer();//为何总是报错???费解
outer.inner b = a.new inner();
b.printString();
}
class outer {
String str = "aaa";
class inner {
String str = "bbb";
void printString() {
System.out.println("外部类中字符串的值为:" + outer.this.str);
System.out.println("内部类中字符串的值为:" + this.str);
}
}
}
}
outer a = new outer();//为何总是报错???费解
复制代码
作者:
HM张健
时间:
2013-4-19 18:31
额 把 outer a = new outer(); 改成Test8.outer a = new Test8().new outer(); 你这是三个类嵌套啊 估计你打错大括号了
作者:
up.yfei
时间:
2013-4-20 10:51
你这所有的代码在一个类里?你这相当里 Test8类里有outer类 ,outer类里有inner类,
所以你new outer类的时候也就相当于new 内部类了,所以应该写成outer a = new Test8().new outer();
作者:
lipingan0520
时间:
2013-4-20 11:05
Test8.outer a = new Test8().new outer();
复制代码
如果你要创建内部类对象,这样就可以了,
没必要在创建外部类对象,因为你创建内部内后,可以直接在内部,调用外部内的方法和变量。
outer a = new outer();这行报错主要是outer内是非静态的,主函数是静态的。
作者:
高新星
时间:
2013-4-20 12:58
public static void main(String[] args) {
Test.outer a =new Test().new outer();//主函数是静态的,而outer是内部类相当于类中的成员,静态成员不能直接访问非静态成员
outer.inner b = a.new inner();
b.printString();
}
复制代码
作者:
黄玉昆
时间:
2013-4-20 14:51
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2