java面向对象(子父类中构造函数的特点-子类实例化过程)
时间:2014-04-25 22:42 来源: 我爱IT技术网 作者:山风
面向对象(子父类中构造函数的特点-子类实例化过程)
1)为什么构造函数不存在覆盖?因为构造函数名与类名一样,而子父类的名称不能一样。
2)this()调用本类构造函数,super()调用父类构造函数。(根据参数,选择对应构造函数)
3)为什么子类一定要访问父类构造函数?因为子类在用父类数据前,需先查看父类如何初始化,再初始化自己;否则可能重复。
4)子类构造函数第一行要么是super(),要么是this()。如果是this(),那就没super(),因为this语句已占据第一行。
子类的实例化过程
子类所有构造函数,都默认访问父类空参数的构造函数,因为第一行都有一条隐式语句super();
当父类中没有空参数构造函数时,子类必须指定要访问父类中的构造函数。
子类中,至少有一个构造函数会访问父类构造函数。
class Fu
{
int num=61;
Fu()
{
num=62;
System.out.println("父类构造函数无参");
}
Fu(int x)
{
num=63;
System.out.println("父类构造函数有参,"+x);
}
}
class Zi extends Fu
{
Zi()
{
//super();
//super(2);
//num=64
System.out.println("子类构造函数无参");
}
Zi(int x)
{
//super();
super(3);
System.out.println("子类构造函数有参,"+x);
}
}
class Test
{
public static void main(String[] args)
{
Zi z=new Zi();
Zi z1=new Zi(4);
System.out.println(z.num);
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/*
class Person
{
private String name;
Person(String name)
{
this.name=name;
}
void show(){}
}
class Student extends Person
{
Student(String name)
{
super(name); //调用父类的构造函数
}
void method()
{
super.show(); //调用父类的普通函数
}
}
*/
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5613.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
