输出答案是:
class javaEnhance.Test$1
class javaEnhance.Test$1
class javaEnhance.Test2
class javaEnhance.Test2
class javaEnhance.Test2
1.Test$1, 是什么意思? new Test1(){}不是创建Test1的匿名子类吗?
2.怎么 new Test2()输出的都是class javaEnhance.Test2,什么原因?和继承有什么关系?最好说得详细点 作者: 胡文凡 时间: 2012-8-6 08:54
代码应该贴错了,主方法都不在类中
javaEnhance.Test$1这个应该就是内部类的意思作者: 官文昌 时间: 2012-8-6 09:48 本帖最后由 官文昌 于 2012-8-6 15:16 编辑
public class Test
{
public class Test {
public Test()
{
System.out.println("---Test---"+this.getClass());
}
public static void main(String[] args)
{
new Test1(){};//Test$1 就是内部类的意思,当程序运行这句话时,Test1继承了Test,所以Test1继承了父类的Test()方法,而this代表本类(内部类),所以运行的结果
//是Test$1。当运行完父类的方法后,程序运行子类的特有方法。从结果你就可以看到这句话输出了两个结果。
System.out.println("----------");//加了这句话你就更好理解了~~
new Test2();//注意,当子类继承父类时,子类也继承了
}
} //注意:只有类与类才可以继承,此处少个}。
class Test1 extends Test
{
public Test1()
{
System.out.println("---Test1---"+this.getClass());
}