super关键字
1.super可用于访问父类中定义的属性
2.super可用于调用父类中定义的成员方法
3.super可用于在子类构造中调用父类的构造器
注意:
当子类与父类中有同名的属性时,可以通过”super.属性”显式的调用弗雷中声明的属性
当子类中重写父类的方法以后,在子类中若想再显式的调用父类的被重写的方法,就需要使用”super.方法”
super修饰构造器,通过在子类中使用”super(形参列表)”来显式的调用父类中指定的构造器
在构造内部,”super(形参列表)”必须要声明在首行
在构造器内部,”this(形参列表)”或”super(形参列表)”只能出一个
当构造器中,不显式的调用”this(形参列表)”或”super(形参列表)”其中任何一个,默认调用的是父类中的空参构造器
建议:设计一个类时,尽量要提供一个空参的构造器
class Fu {
Fu() {
System.out.println("fu");
}
}
public class Zi extends Fu {
Zi() {
super();//调用父类的构造方法,一定要放在方法的首个语句
System.out.println("Zi");
}
public static void main(String argv[]) {
Checket c = new Checket();}
}
class Person {
public static void prt(String s) {
System.out.println(s);
}
Person() {
prt("A Person.");
}
Person(String name) {
prt("A person name is:" + name);
}
}
public class Chinese extends Person {
Chinese() {
super(); // 调用父类构造函数(1)
prt("A chinese.");// (4)
}
Chinese(String name) {
super(name);// 调用父类具有相同形参的构造函数(2)
prt("his name is:" + name);
}
Chinese(String name, int age) {
this(name);// 调用当前具有相同形参的构造函数(3)
prt("his age is:" + age);
}
public static void main(String[] args) {
Chinese cn = new Chinese();
cn = new Chinese("kevin");
cn = new Chinese("kevin", 22);
}
}
输出结果为:
A Person.
A chinese.
A person name is:kevin
his name is:kevin
A person name is:kevin
his name is:kevin
his age is:22
this关键字详见:http://blog.csdn.net/uponz/article/details/79101175
this,super区别详见:http://blog.csdn.net/uponz/article/details/79116429