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()是做什么用的呢?
{
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()是做什么用的呢?
然后 m 指向man对象
super() 调用父类的构造方法,成员变量,成员方法。
men()
{
super(); //在这里你调用的是父类的无参构造方法
b=20;
System.out.println("这是子类的构造器!");
}
{
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); }
}
men()
{
super();//在这里,其实这个是默认的,不写也会有 super();
//当调用 本身构造器时会先执行父类构造器。
//相当于有两个实例被实例化,一个是父类,一个是子类。
//这个是很现实的,没有父亲就不会有儿子,而且是先有父亲才会有儿子。
b=20;
System.out.println("这是子类的构造器!");
}
然后调用men的构造函数,父类默认的构造函数super()不显式调用也没关系,系统会自动调用的。
a=10,并输出语句,接着执行men 构造方法中剩下的部分。在m.a + m.b 中,因为子类继承了父类的方法和对象,所以m可以调用父类里的a对象,故输出结果。在子类的构造方法里可以不要super(),因为在子类里默认调用父类的无参构造方法