class Person
{
int a ;
Person()
{
a=10;
System.out.println("这是父类的构造器");
}
}public class men extends Person
{int b;
men()
{
super();
b=20;
System.out.println("这是子类的构造器!");
}
public static void main(String[]args)
{
men m=new men();
System.out.println(m.a+""+m.b);

}
}
我想问的是这个程序的步骤是如何执行的?  还有super()是做什么用的呢?

解决方案 »

  1.   

    先在堆上创建 Person 和man 的对象 
    然后 m 指向man对象 
    super() 调用父类的构造方法,成员变量,成员方法。
    men()
    {
    super(); //在这里你调用的是父类的无参构造方法
    b=20;
    System.out.println("这是子类的构造器!");
    }
      

  2.   

    class Person
    {
    int a ;
    Person()
    {
    a=10;
    System.out.println("这是父类的构造器"); 
    }
    }public class men extends Person
    {
    int b;
    men()
    {
    /**
     * @author 不再悲伤
     * 如果在子类中想引用被子类隐藏了的父类的成员变量或方法
     * 就可以使用关键字super。比如super.x、super.play(),
     * 就是被子类隐藏的父类的成员变量x和方法play().
     * 对于继承,自然先是执行父类构造函数,在执行子类构造函
     * 数……
     */
    super();
    b=20;
    System.out.println("这是子类的构造器!");
    }
    public static void main(String[]args)
    {
    men m=new men();
    System.out.println(m.a+""+m.b); }
    }
      

  3.   

    想找个java,帮我解决下国际象棋关于骑士巡游问题,写栈,队列,树的相关方法
      

  4.   


    men()
    {
    super();//在这里,其实这个是默认的,不写也会有 super();
    //当调用 本身构造器时会先执行父类构造器。
    //相当于有两个实例被实例化,一个是父类,一个是子类。
    //这个是很现实的,没有父亲就不会有儿子,而且是先有父亲才会有儿子。
    b=20;
    System.out.println("这是子类的构造器!");
    }
      

  5.   

    首先初始化a=0,b=0
    然后调用men的构造函数,父类默认的构造函数super()不显式调用也没关系,系统会自动调用的。
      

  6.   

     men m = new men();  调用men 的构造方法,在该构造方法中有super()方法,故执行父类的构造方法,使得
    a=10,并输出语句,接着执行men 构造方法中剩下的部分。在m.a + m.b 中,因为子类继承了父类的方法和对象,所以m可以调用父类里的a对象,故输出结果。在子类的构造方法里可以不要super(),因为在子类里默认调用父类的无参构造方法
      

  7.   

    super()是调用父类的构造方法。其它的代码你应该都能看懂吧