您的位置:首页 > 编程语言 > Java开发

Java,super用法实例

2016-04-09 10:46 369 查看
class  Father{
String name;
int age;
public  Father(){
name="Tom";
age=10;
}
}
class Son  extends Father{
public Son(){
//-----1
//System.out.print(name+","+age);///输出:Tom,10
//-----2
super(); //// Father()是无参构造函数,写不写	super();都一样
System.out.print(name+","+age);///输出:Tom,10
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Son son  =new Son();
}
}
class Father {
String name;
int age;
public Father(String name, int age) {
this.name = name;
this.age = age;
}
}
class Son extends Father {
public Son() {
// -----1错误, 调用父类无参数的构造函数,但没有,会报错
// super(); //// FFF
// System.out.print(name);///

// //-----2正确
super("Dave", 2);// /TTT 显式调用父类的构造函数
System.out.println(getClass() + "," + name + "," + age);// 输出:class	Son,Dave,2
System.out.print(getClass() + "," + this.name + "," + this.age);// 输出:class	Son,Dave,2
// //Son继承Father后,也继承了name和age的变量值

// -----3 错误 默认调用父类无参数的构造函数,但没有,会报错
// System.out.println(getClass()+","+name+","+age);
// System.out.print(getClass()+","+this.name+","+this.age);
//提示: Implicit super constructor Father() is undefined. Must explicitly invoke another constructor
// /必须要定义其他的父类构造函数
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Son son = new Son();
}
}

第一个例子中,其实在类Son中的构造函数中的
super()可以不写,JAVA会默认调用父类的无参数的构造函数。

第二个例子的1和3中,如果父类没有定义无参数的构造函数,会报错,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息