黑马程序员技术交流社区

标题: 匿名内部类对象的构造方法如何调用父类的非默认构造方... [打印本页]

作者: hadexs    时间: 2013-6-29 20:00
标题: 匿名内部类对象的构造方法如何调用父类的非默认构造方...
本帖最后由 孙百鑫 于 2013-7-1 07:59 编辑

匿名内部类对象的构造方法如何调用父类的非默认构造方法?
作者: L.I.F.E    时间: 2013-6-29 20:40
  1. class Person
  2. {
  3.         String name ;
  4.         int age;
  5.         Person(String name,int age){
  6.         this.name = name;
  7.         this.age = age;
  8.         }
  9.         public String getName(){
  10.                 return name;
  11.         }

  12. }


  13. class  Test8
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 System.out.println(new Person("zhangsan",15).getName());
  18.                 //应该没有什么区别吧,无论是否复习方法,都会输出姓名的!
  19.                 System.out.println(new Person("zhangsan",15){
  20.                        
  21.                         public String getName(){
  22.                         //        return name;
  23.                         return super.getName();
  24.                         }
  25.                 }.getName());


  26.         }
  27. }
复制代码

作者: L.I.F.E    时间: 2013-6-29 20:47
L.I.F.E 发表于 2013-6-29 20:40

Compiled from "Test8.java"
final class Test8$1 extends Person {
  Test8$1(java.lang.String, int);
    Code:
       0: aload_0      
       1: aload_1      
       2: iload_2      
       3: invokespecial #1                  // Method Person."<init>":(Ljava/lang/String;I)V
       6: return        
}


我们能发现这个匿名类是继承Person的。
作者: lipingan0520    时间: 2013-6-30 08:13
继承Person是必须的嘛,不然怎能复写getName()方法呢是吧{:soso_e100:},不过你在输出后面加个匿名内部类,倒是很少见的。
作者: 孙百鑫    时间: 2013-7-1 07:59
帖子解决。请及时联系版主改成已解决。不然会漏分的哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2