2013-10-16 84 views
0

如果我有這樣的結構中的Java:訪問在基類的方法在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()方法來訪問。我怎樣才能做到這一點? B方法重寫方法的getName()方法嗎?

回答

2

我想通過該對象訪問繼承的方法getName()。 我該怎麼做?

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

B中,你可以做

super.getName(); 

如果超類型聲明瞭一個getName()方法。

在您的示例中,方法A#getName()被繼承並在B中被覆蓋。


請注意,private字段不會被繼承。

請注意,具有相同名稱的字段可能會隱藏繼承的字段。

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 

你應該把二傳手爲NameA類。另外,String需要在Java中大寫。

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 
*/ 
}