Java:方法的继承

Java: Inheritance of method

我有两个类:

abstract class A 
{
    private int a;
    protected int get(){return a;}
}

class B extends A
{
    private int a = 2;
}

我想要的是继承 get() 方法,它会给我结果 2 而不是 0。我知道为什么这段代码不起作用,但不知道是否有可能在 java.

您可以在 class B 中覆盖 get() :

class B extends A
{
    private int a = 2;

    @Override
    protected int get() {
        return a;
    }
}

这样,在 class B 的实例上调用 get() 将 return Ba 成员。

如果您不想覆盖 get() 方法,您可以将值传递给构造函数中的 a 属性:

abstract class A {
    private int a;

    protected A(int a) {
        this.a = a;
    }

    protected int get() {
        return this.a;
    }
}

class B
    extends A {

    B() {
        super(2);
    }

    public static void main(String[] args) {
        B b = new B();
        System.out.println(b.get()); // 2
    }
}

如果您使用 getA() 这样的访问器,您可以使用 get() 及其所有功能,只要 get() 定义中的任何代码都使用 getA() 来获取 a 的值而不仅仅是使用 a.

小例子:

abstract class A 
{
    private int a;

    protected int get(){
        // do anything with getA(), here just return the value as in your question.
        return getA();
    }

    public int getA(){ return a; }
}

class B extends A
{
    private int a = 2;

    @Override
    public int getA(){ return a; }
}