super就是掉用超类的方法~~~~譬如class A {
A(String s) {}
A() {}
}
class B extends A {
super(s)//等于是调用A(String s)这个方法
}那A就是B的超类,B就是A的衍生类,
A(String s) {}
A() {}
}
class B extends A {
super(s)//等于是调用A(String s)这个方法
}那A就是B的超类,B就是A的衍生类,
public class F
{
public F(){}
}class S extends F
{
public S()
{
super();
}
}
String name;
public Father(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}public class Child extends Father{
public Child(String name){
super(name);
}
}显然,父类的getName()方法被继承,但是可以看出,getName的正确执行是依赖于父类的构建行为的。that is the point.
super()必须用在你构造函数的第一行,它代表你引用你直接父类的构造函数。
super.func()就是表示你引用你直接父类的可见函数和成员变量
如果在一个子类里覆盖了父类的某个成员函数,
但又想调用父类的成员函数。
class SuperClass{
private int x=100;
public int getX(){
return x;
}
}
class Subbie extends SuperClass{
private int y=200;
public int getY(){
return y;
}
}
public class p101{
public static void main(String[] args){
SuperClass superA=new SuperClass(),superB;
Subbie subA=new Subbie(),subB;
//用子类对象作为实际参数传递给应是父类对象的形参
(new p101()).useSubAsSuper(subA);
superB=subA; //把子类对象赋予父类对象
System.out.println("superB.getX():"+superB.getX());
//如果输出中用到方法getY()将出错,如下一句
//System.out.println(superB.getX()+" "+superB.getY());
//subB=superA; //把父类对象赋予子类对象将出错
//把指向子类地址的父类对象superB强制转换成子类对象,并赋予subB
subB=(Subbie)superB;
System.out.println(subB.getX()+" "+subB.getY());
}
public void useSubAsSuper(SuperClass x){ //该方法的形参是父类对象
System.out.println(x.getX()+"!!!!!!!");
}
}