问题描述
- java中关于内部类的问题
- interface A
{
public void fun1();
}
class B
{
int i=10;
class C implements A
{
public void fun1()
{
System.out.println(i);
}
}
public void get(A a)
{
a.fun1();
}
public void test()
{
this.get(new C());
}
}
class TestNonameInner
{
public static void main(String [] args)
{
B b=new B();
b.test();
}
}```我想问下这段代码运行时情况,怎么一步一步运行输出结果的?讲解详细一些。谢谢!
解决方案
前一段时间在CSDN论坛回答的一个问题,觉得蛮有意思的,决定拿出来在这里记录一下。?问题的提出:?该例子程序涉及到了三个class文件,分别是Contents.java,Destination.java,Parcel10.java。其中的Contents.java和Destination.java是两个interface,而Parcel10.java是含有静态内部类的一个类文件。 ......
答案就在这里:Java的内部类问题
解决方案二:
A是一个借口,C实现了fun1方法。
B b=new B();
b.test();//调用b的test方法
this.get(new C());//在test中调用get方法,创建一个C对象
public void get(A a)
{
a.fun1();//在这里由于多态,会调用C的fun1方法
}
System.out.println(i); //最终执行这个,输出10
时间: 2024-10-28 09:02:48