父和子中的Java不能按预期工作

时间:2016-10-21 06:00:22

标签: java inheritance

我误解了继承的基本内容。 我有一个父类:

A

和一个儿童班:

public class Parent {
    String s = "Parent";
    Parent () {}
    String getS() {
        return this.s;
    }
}

主要是:

public class Child extends Parent {
    String s = "Child";
    Child() { }
}

我希望Parent parent = new Parent(); Child child = new Child(); Log.e(TAG, "parent:" + parent.getS()); Log.e(TAG, "child:" + child.getS()); 返回“Parent”,parent.getS()返回“Child”,但两者都返回“Parent”。当以这种方式调用时,方法前缀是否不能确定方法的child.getS()

谢谢 史蒂夫S。

3 个答案:

答案 0 :(得分:1)

  • 来自父类的getS()方法在Child类中继承 因此它可用于Child对象。
  • 覆盖仅适用于方法,而不适用于实例变量。
  • 因此,即使您定义了一个具有相同名称的新变量,它也不会生效,因为它不会被覆盖

答案 1 :(得分:0)

当您在main方法中调用child.getS()时,您应该在Child类中创建一个getter方法,即getS()来检索“Child”。这样,您可以覆盖从Parent类继承的getS()方法。

答案 2 :(得分:0)

在子类的父部分中设置s - 成员的方式是提供protected构造函数(当然,它也可以是{{1} }}):

public

将字符串设置为给定值。然后,您将使用

将此构造函数称为子构造函数中的第一个调用

protected Parent(String s) { this.s = s; }