访问java中基类中的方法

时间:2013-10-16 18:12:43

标签: java inheritance

如果我在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()。我怎样才能做到这一点?方法中的getName()方法是否被B方法覆盖?

3 个答案:

答案 0 :(得分:2)

  

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

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

B开始,您可以

super.getName();

如果其超类型声明getName()方法。

在您的示例中,方法A#getName()B中被继承并覆盖。


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

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

答案 1 :(得分: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中为A放置一个setter。此外,String需要在Java中大写。

答案 2 :(得分: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
*/
}