-7

我想帮助解决他的问题。我在这个话题上找不到任何东西。(也许我正在寻找错误的东西)

定义一个名为 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;
    }
}
4

2 回答 2

3

首先,m需要nprotected,不是privateprotected是默认值)。然后只需执行以下操作:

public class B extends C {
    public int m1() { return m - n; }
}
于 2013-03-26T23:35:11.690 回答
0

你说,你不能改变C类,因为mand nareprivate并且C没有任何 getter 和 setter,你实际上不能在你的 subclass 中使用mor 。你可以做的是用它自己的和初始化你的类。像这样的东西:nBBmn

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.

于 2013-03-26T23:37:25.160 回答