0

如果我有课

class Foo{
    String name;
    public Foo(String s){
        name=s;
    }

    public void setName(String s){
        name=s;
    }

    public String getName(){
        return name;
    }
}

进而

class FooBar extends Foo {
    public FooBar(String S){
        super(s);
    }
}

我的主要方法是

public static void main(String[] args){
    FooBar item1 = new FooBar("Jim");
}

FooBar 类中的 super() 会调用然后调用 Foo() 的构造函数并将名称正确设置为 s 吗?这是普通的 super() 调用的作用吗?调用被扩展类的构造函数?

4

2 回答 2

2

是的,这正是它的作用。它调用超/基类的构造函数。

于 2013-02-18T18:55:45.760 回答
1

super总是指你的父类。代码执行顺序如下:

new FooBar("Jim");-> super(s);->Foo(String s)将设置name=s

没有默认构造函数,因此没有super()(即没有参数),因为您无法创建FooBar没有String参数的实例

于 2013-02-18T18:55:39.613 回答