如果我在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方法覆盖?
答案 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
*/
}