当一个方法只在父类中定义时,为什么调用该方法时会使用父类中的属性

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方法子类重写即可

问答版主就是牛,从现在起只回论坛,不在踏入问答半步