0

如果我在 Java 中有这个结构:

class A{
private string Name;

public string getName() {
    return this.Name;

}


class B extends A{
private string Name;

public string getName(){
    return this.Name;
}

}

我创建了一个 B 类的对象,我想通过该对象访问继承的方法 getName()。我怎样才能做到这一点?来自 A 的方法 getName() 是否被 B 方法覆盖?

4

3 回答 3

2

我想通过该对象访问继承的方法 getName()。我怎样才能做到这一点?

从 之外的上下文中B,您不能。

从内部B,你可以做到

super.getName();

如果它的超类型声明了一个getName()方法。

在您的示例中,该方法A#getName()B.


请注意,private字段不会被继承。

请注意,具有相同名称的字段可能会隐藏继承的字段。

于 2013-10-16T18:14:01.570 回答
0

将您的结构更改为:

class A{
protected string Name;

public string getName() {
    return this.Name;
} 
}


class B extends A{ 
    public B(String Name) {
        this.Name = Name;
    }
}

然后你可以这样做:

B myB = new B();
myB.Name = "Susie";
System.out.println(myB.getName()); //Prints Susie

Name您应该在课堂上放置一个 setter A。此外,String需要在 Java 中大写。

于 2013-10-16T18:17:31.240 回答
0

您可以通过以下方式定义 B 类

class B extends A{
// no repetition of name

public String getName(){
    //you don't need to access A.name directly just
    //use you A.getName() since it's your superclass
    //you use super, this way A.name can be private
    String localVarName = super.getName();

    // do class B changes to Name

    return localVarName;
}

/*
 *rest of B class you may want to add
*/
}
于 2013-10-16T18:18:13.420 回答