class Father {
private String name = "Father";
public String getName() {
return name;
}
}
class Child extends Father{
private String name = "child";
public static void main(String[] args) {
Child c = new Child();
System.out.println("输出结果:"+c.getName());
}
}
输出结果:Father
————————————————
当一个方法只在父类中定义时,为什么调用该方法时会使用父类中的属性?子类和父类有同名的属性,调用父类方法,用的属性为什么不是子类的?
因为你的这个方法实际的写法应该为this.name,只不过this可写可不写,意思就是返回的为当前类中定义的name
public String getName() {
return name;
}
public String getName() {
return this.name; //
}
如果你要使用子类的name就这么写
class Father {
private String name = "Father";
public String getName(String name) {
return name;
}
}
class Child extends Father{
private static String name = "child";
public static void main(String[] args) {
Child c = new Child();
System.out.println("输出结果:"+c.getName(name)); //打印为child
}
}
如果你要使用父类的就这么写
class Father {
private String name = "Father";
public String getName(String name) {
return this.name;
}
}
class Child extends Father{
private static String name = "child";
public static void main(String[] args) {
Child c = new Child();
System.out.println("输出结果:"+c.getName(name)); //打印为father
}
}
肯定是返回父类的father,因为子类并没有实现getName方法
子类重写getName方法
父类没办法访问子类的属性
同名属性的话,父类只会使用父类的,子类只会使用子类的
增加get方法子类重写即可
问答版主就是牛,从现在起只回论坛,不在踏入问答半步