java中的关键字super有两种用法。
一、调用父类的构造方法,如:
class A
{
A(String s)
{
System.out.println(s)
}
}
class B extends A
{
B()
{
super("父类")
System.out.println("子类")
}
}
完整例子如下图:
二、调用父类的实例方法,如:
class A
{
void f1()
{
System.out.println("A.f1")
}
void f2()
{
System.out.println("A.f2")
}
}
class B extends A
{
void f()
{
super.f1()
f2()
}
void f2()
{
super.f2()
System.out.println("B.f2")
}
}
完整例子如下图:
你关系弄反了,应该是Son extends Father。。。你子类里面没有写构造函数是不是。。。。系统会默认调用父类的无参构造函数,但是你写了一个带参的构造函数,而且把无参的构造函数删掉了,当然会报编译错误啊目测你的代码是
public class Parent{
public Parent(String name){
}
}
public class Son extends Parent{
//如果这里不显示调用父类的无参构造函数,编译报错....
public Son(String name){
super(name) //这样才是正确地
}
}