Java,super用法实例

来源:互联网 发布:ubuntu 16.04设置中文 编辑:程序博客网 时间:2024/04/27 22:16
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//-----2super(); //// Father()是无参构造函数,写不写super();都一样System.out.print(name+","+age);///输出:Tom,10}}public class Test {public static void main(String[] args) {// TODO Auto-generated method stubSon 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);// 输出:classSon,Dave,2System.out.print(getClass() + "," + this.name + "," + this.age);// 输出:classSon,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 stubSon son = new Son();}}

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

第二个例子的1和3中,如果父类没有定义无参数的构造函数,会报错,


0 0
原创粉丝点击