黑马程序员技术交流社区
标题:
请教一个问题!!
[打印本页]
作者:
胡宝林
时间:
2012-6-8 11:05
标题:
请教一个问题!!
public class C{
public static void main(String[] args) throws Exception{
new C().a();
}
private void a()throws Exception {
System.out.println( Inner.class.newInstance() );
}
public class Inner{
public String toString(){
return "haha";
}
}
}
//Inner内部类重写了toString方法,打印这个内部类的实例,会打印haha,但是却报错,哪错了,求解!!!!
作者:
郑传庆
时间:
2012-6-8 11:15
你本身的代码就有问题,要不你就写成下面这样
public static void main(String[] args)throws Exception
{
new Inner().a();
}
public static class Inner{
public String toString(){
return "haha";
}
private void a()throws Exception {
System.out.println( Inner.class.newInstance() );
}
}
作者:
孙峰
时间:
2012-6-8 11:19
private void a()throws Exception {
System.out.println( Inner.class.newInstance() );
}
这里有错误啊。 Inner.class 请问是什么意思呢? 还有:newInstance()方法在哪?
如果改成:Seytem.out.print(new Inner().toString());就可以了, 首先:Inner类是非静态的,调用的话,你要创建对象:new Inner(),然后这个对象再调用里面的 toString()方法。
作者:
杨文园
时间:
2012-6-8 11:28
你在静态方法中调用 非静态的类,肯定有问题 ;你把内部类换成 static 声明就ok了 我已经试过了望采纳!
作者:
何拴绪
时间:
2012-6-8 12:17
要想引用内部类的方法,首先要创建外部类对象。然后再通过外部类创建内部类对象。直接上代码:
public class C{
public static void main(String[] args) throws Exception{
C c=new C();
C.Inner inner = c.new Inner();//创建内部类要先创建外部类对象然后创建内部类对象。
c.a(inner);//打印“haha”
System.out.print(inner);//打印“haha”
}
private void a(Inner in)throws Exception {
System.out.println(in);
}
public class Inner{
public String toString(){
return "haha";
}
}
}
复制代码
作者:
赵兵锋
时间:
2012-6-8 12:35
public class Main {
public static void main(String[] args) throws InstantiationException,
IllegalAccessException {
new Main().a();
}
private void a() throws InstantiationException, IllegalAccessException {
System.out.println(Inner.class.newInstance());
System.out.println(Inner.class.newInstance());
}
public static class Inner {
static{
System.out.println("static init");
}
public Inner() {
System.out.println("construct init");
}
@Override
public String toString() {
return "haha";
}
}
}
复制代码
输出:
static init
construct init
haha
construct init
haha
作者:
黑马-王言龙
时间:
2012-6-8 12:59
杨文园 发表于 2012-6-8 11:28
你在静态方法中调用 非静态的类,肯定有问题 ;你把内部类换成 static 声明就ok了 我已经试过了望采纳! ...
已经创建匿名对象了!
作者:
唐志兵
时间:
2012-6-8 13:43
内部类可以直接访问外部类中的成员,包括私有
外部类想要访问内部类中的成员或方法首先要建立内部类的对象。
public class C{
public static void main(String[] args) throws Exception{
C c = new C(); //首先要实例化一个外部类
System.out.println(c.new inner().toString()); 然后再去实例化一个内部类,这样才能调用里面的方法。
}
class inner{
public String toString(){
return "haha";
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2