最重要的方法

时间:2013-03-26 23:32:07

标签: java methods method-overriding

我想帮助解决他的问题。我无法找到关于这个主题的任何内容。 (也许我在寻找错误的东西)

定义一个名为B的C的子类,它覆盖方法m1(),以便返回m和n之间的差值。

public class C
{
    private int m;
    private int n;

    public C(int mIn, int nIn)
    {
        m = mIn;
        n = nIn;
    }
    public int m1()
    {
        return m+n;
    }
}

2 个答案:

答案 0 :(得分:3)

首先,mn需要protected,而不是privateprotected是默认值)。然后做一些像:

public class B extends C {
    public int m1() { return m - n; }
}

答案 1 :(得分:0)

您说,您无法更改C课程,因为mnprivateC没有任何获取者实际上,你实际上不能在你的子类m中使用nB。您可以做的是使用自己的Bm初始化您的n课程。 这样的事情:

public class B extends C{
    private int bm;
    private int bn;

    public B(int mIn, int nIn){
       super(mIn,nIn);
       this.bm=mIn;
       this.bn=nIn;
    }

    @Override
    public int m1(){
       // and then you can use the B's n and m
       return this.bm - this.bn;
    }
}

然后你可以这样做:

C myClass = new B( 1, 2);
int difference = B.m1();

但是,如果任何不同的C类可能无效。如果您不允许更改C,那么在正常情况下,您甚至不知道C的确切含义,特别是它没有变量mn或者如果他们用C的另一种方法改变某处。