-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

まず、(がデフォルト)ではなく、mnある必要があります。次に、次のようにします。protectedprivateprotected

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

あなたはCクラスを変更することはできず、mandnはgetterprivateCsetter を持っていないので、実際にはサブクラスでorを使用することはできません。できることは、クラスを独自のandで初期化することです。そんな感じ:mnBBmn

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かさえわかりません。CmnC

于 2013-03-26T23:37:25.160 に答える